Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Chromeen omia skriptejä?

Macro [06.11.2010 18:37:33]

#

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);
}

Metabolix [06.11.2010 19:34:04]

#

  1. Loin tiedoston nimeltä koe.user.js ja kirjoitin sinne seuraavaa:

    // ==UserScript==
    // @match https://www.ohjelmointiputka.net/*
    // ==/UserScript==
    
    alert("Kokeilu!");
  2. Avasin kyseisen tiedoston Chromiumilla.

  3. Klikkasin alareunaan ilmestyneestä turvallisuusvaroituksesta Continue.

  4. Klikkasin ruudun keskelle ilmeistyneestä asennuslaatikosta Install.

  5. 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.

Macro [06.11.2010 20:06:06]

#

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++) {".

Macro [06.11.2010 21:29:15]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta