Byta ut strängar, Greasemonkey

Permalänk

Byta ut strängar, Greasemonkey

Går det med hjälp av Greasemonkey att leta upp en specifik sträng och byta ut den?

Strängen är

<img src="./styles/prosilver/imageset/site_logo.gif" alt="" title="" height="52" width="139">

Det jag vill byta är storleken på bilden, alltså få ändrat height och width.

Permalänk
Medlem
Skrivet av Sandking305:

Går det med hjälp av Greasemonkey att leta upp en specifik sträng och byta ut den?

Strängen är

<img src="./styles/prosilver/imageset/site_logo.gif" alt="" title="" height="52" width="139">

Det jag vill byta är storleken på bilden, alltså få ändrat height och width.

Javisst. Det största problemet man har i Greasemonkey är att det kan vara bökigt att leta reda på elementen man vill ändra. Då det troligtvis inte är en sida man själv har gjort så måste man leva med att sidan kan förändras också.

Några alternativ för att hitta bilden:
Xpath, CSS-selector, manuell traversering etc.

I detta fall så är en manuell traversering ganska enkel att göra men det kräver lite trial-and-error för att hitta rätt element eller så kan man loopa men det kan vara problematiskt om det är massor med bilder.

var imageList = document.getElementsByTagName('img'); foreach(var image in imageList) { if (image.src.indexOf('site_logo.gif') > -1) { image.style.width = '200px'; image.style.height = '80px'; } }

Det går också att göra ganska bra med en css query selector

var image = document.querySelector('img[src~="site_logo"]); image.style.width = '200px'; image.style.height = '80px';

Koden är otestad. Hojta om det är något som är oklart.

Glömde code-taggar
Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Javisst. Det största problemet man har i Greasemonkey är att det kan vara bökigt att leta reda på elementen man vill ändra. Då det troligtvis inte är en sida man själv har gjort så måste man leva med att sidan kan förändras också.

Några alternativ för att hitta bilden:
Xpath, CSS-selector, manuell traversering etc.

I detta fall så är en manuell traversering ganska enkel att göra men det kräver lite trial-and-error för att hitta rätt element eller så kan man loopa men det kan vara problematiskt om det är massor med bilder.

var imageList = document.getElementsByTagName('img'); foreach(var image in imageList) { if (image.src.indexOf('site_logo.gif') > -1) { image.style.width = '200px'; image.style.height = '80px'; } }

Det går också att göra ganska bra med en css query selector

var image = document.querySelector('img[src~="site_logo"]); image.style.width = '200px'; image.style.height = '80px';

Koden är otestad. Hojta om det är något som är oklart.

Första koden ger syntax error på foreach raden. Den andra ger error på: image.style.width = '200px'; raden, att "image is null".

Har försökt lite fram och tillbaka men har inte fått det att funka. Kör scriptet genom firefox's javascript-kladdblock (verktyg > webbutvecklare > kladdblocket).

Har inte så mycket erfarenhet av javascript, eller programmering i allmänhet. Läste bara lite C++ i gymnasiet flera år sedan.

Själva sidan med logon jag försöker ändra är ett phpbb forum med prosilver temat. http://upload.wikimedia.org/wikipedia/commons/0/01/Phpbb_3.0_prosilver.png

Permalänk
Medlem
Skrivet av Sandking305:

Första koden ger syntax error på foreach raden. Den andra ger error på: image.style.width = '200px'; raden, att "image is null".

Har försökt lite fram och tillbaka men har inte fått det att funka. Kör scriptet genom firefox's javascript-kladdblock (verktyg > webbutvecklare > kladdblocket).

Har inte så mycket erfarenhet av javascript, eller programmering i allmänhet. Läste bara lite C++ i gymnasiet flera år sedan.

Själva sidan med logon jag försöker ändra är ett phpbb forum med prosilver temat. http://upload.wikimedia.org/wikipedia/commons/0/01/Phpbb_3.0_prosilver.png

Ja, otestad kod gör sånt. Men jag tänkte att du skulle få en riktning om vad som skulle göras och rätta det själv.

Första lösningen gjordes lite knasigt. foreach existerar inte. Ganska onödigt anrop till getElementsByTagName då vi hämtar alla på hela pagen.
Detta borde fungera:

var images = document.images; for (var i=0; i<images.length; i++) { var image = images[i]; if (image.src.indexOf('site_logo.gif') > -1) { image.style.width = '200px'; image.style.height = '80px'; } }

Andra lösningen så skrev jag aningen fel syntax. Här är rätt kod:

var image = document.querySelector('img[src*="site_logo.gif"]'); image.style.width = '200px'; image.style.height = '80px';

Jag har kollat i kladdblocket mot denna sida: http://www.phpbb.com/styles/demo/3.0/board/index.php?style=87...
Där heter bilden logo.png

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Ja, otestad kod gör sånt. Men jag tänkte att du skulle få en riktning om vad som skulle göras och rätta det själv.

Första lösningen gjordes lite knasigt. foreach existerar inte. Ganska onödigt anrop till getElementsByTagName då vi hämtar alla på hela pagen.
Detta borde fungera:

var images = document.images; for (var i=0; i<images.length; i++) { var image = images[i]; if (image.src.indexOf('site_logo.gif') > -1) { image.style.width = '200px'; image.style.height = '80px'; } }

Andra lösningen så skrev jag aningen fel syntax. Här är rätt kod:

var image = document.querySelector('img[src*="site_logo.gif"]'); image.style.width = '200px'; image.style.height = '80px';

Jag har kollat i kladdblocket mot denna sida: http://www.phpbb.com/styles/demo/3.0/board/index.php?style=87...
Där heter bilden logo.png

Nu funkar det utmärkt, testade första koden och funkade direkt. Stor och fin yta att lägga ut min egna logo på nu.

Tackar och bockar!

Permalänk
Medlem
Skrivet av Sandking305:

Nu funkar det utmärkt, testade första koden och funkade direkt. Stor och fin yta att lägga ut min egna logo på nu.

Tackar och bockar!

Finfint.

Får jag fråga vad och varför du gör det du gör?

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Finfint.

Får jag fråga vad och varför du gör det du gör?

Har blivit less header på ett forum jag ofta använder. Och då "Prosilver" inte är original temat för sidan så är det inte ändrat något på det temat, dock gillar jag layouten bättre så det är därför jag valt den istället.

Ovanför röda linjen är original, under är min ändrade.

Permalänk
Medlem
Skrivet av Sandking305:

Har blivit less header på ett forum jag ofta använder. Och då "Prosilver" inte är original temat för sidan så är det inte ändrat något på det temat, dock gillar jag layouten bättre så det är därför jag valt den istället.

Ovanför röda linjen är original, under är min ändrade.
http://img207.imageshack.us/img207/1713/17831019.jpg

Helt rätt!

Jag meckar om nästan alla sidor jag använder med Greasemonkey. Det var så jag lärde mig det mesta om Javascript faktiskt.
Jag kan tipsa om att det går att få in frameworks (jQuery exempelvis) om du ska fortsätta mecka i Greasemonkey.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Helt rätt!

Jag meckar om nästan alla sidor jag använder med Greasemonkey. Det var så jag lärde mig det mesta om Javascript faktiskt.
Jag kan tipsa om att det går att få in frameworks (jQuery exempelvis) om du ska fortsätta mecka i Greasemonkey.

Då blir det väl att fortsätta med andra sidor, nu när man fastnat för programmet