Onko Chromeen mahdollista saada jotain Greasemonkeyn kaltaista user script-systeemiä? Googlettelin, ja kuulemma Chrome osaa asentaa js-tiedostoja laajennuksiksi, mutta en onnistunut siinä.
Naputtelin Javascript-koodin, jonka haluaisin suoritettavan aina yhdellä tietyllä sivulla.
(Koodissa esiintyvä script-tagi ei esiinny varsinaisessa js-tiedostossa. Ei taida olla väritysmahdollisuutta pelkääle Javascriptille?)
(Mod. vaihtoi viestiin sen JS-värityksen, jota "ei taida olla".)
// ==UserScript== // @match http://x.x/x.php* // ==/UserScript== function check(field) { for(i = 0; i < field.length, i++) { field[i].checked = true; } } function unCheck(field) { for(i = 0; i < field.length, i++) { field[i].checked = false; } } document.onReady = function { check(document.msg.check); }
Loin tiedoston nimeltä koe.user.js ja kirjoitin sinne seuraavaa:
// ==UserScript== // @match https://www.ohjelmointiputka.net/* // ==/UserScript== alert("Kokeilu!");
Avasin kyseisen tiedoston Chromiumilla.
Klikkasin alareunaan ilmestyneestä turvallisuusvaroituksesta Continue.
Klikkasin ruudun keskelle ilmeistyneestä asennuslaatikosta Install.
Avasin Ohjelmointiputkan, ja ruudulle pomppasi alert-ikkuna.
Ongelmasi on siis omassa koodissasi. Yksi vika ainakin on siinä, että nimettömästä funktiosta puuttuvat sulut function-sanan perästä. Toinen kummallisuus on tuo onReady, jollaista ei kai ole olemassakaan.
DOM (sivun rakenne) on valmis käsiteltäväksi jo siinä vaiheessa, kun skripti ajetaan. Voit siis ajaa check-funktion suoraan ilman mitään tapahtumankäsittelijää. Jos haluat odottaa, että kaikki resurssitkin ovat latautuneet, voit käyttää window.onload-tapahtumaa.
Nimettömästä funktiosta sulut ovat jääneet pois, koska en ole tiennyt että siellä kuuluisi olla. onready on nähtävästi jokin omien aivojen tuotos, joka tarkoittaa selkokielellä onloadia.
Kiitos avusta. Ohje jota luin, oli hiukan erikoinen.
Edit. Lisäksi noiden korjausten lisäksi olin kirjoittanut pilkun puolipisteen tilalle kohtaan "for(i = 0; i < field.length, i++) {".
Jostain syystä en saa omaa koodiani toimimaan tietyllä sivulla.
// ==UserScript== // @match http://alidomain.päädomain.fi/tiedosto.php* // ==/UserScript== function checkAll(formi, luokka, status) { for (i = 0, n = formi.elements.length; i < n; i++) if (formi.elements[i].className.indexOf(luokka) != -1) formi.elements[i].checked = status; } window.onload = function() { lisaaTama = "<p>Valitse kaikki: <input type=\"checkbox\" onclick=\"checkAll(document.msg, 'check', this.checked);\"></p>"; alert(lisaaTama); document.msg.innerHTML = lisaaTama + document.msg.innerHTML; }
Haluan saada tuon koodin toimimaan sivulla, johon tuo match-kohta sopii. Miksei toimi? Se kyllä toimii siten, että se ilmoittaa tuon alert(lisaaTama), mutta tuo koodin määrittelemä asia ei tule sivulle. Haluan siis formin (jonka name-attribuutissa lukee "msg") alkuun tuon lisaaTama-muuttujan sisällön.
Aihe on jo aika vanha, joten et voi enää vastata siihen.