Gå til innhold

Lage knapper som utfører javascript


Anbefalte innlegg

Hei!

 

 

Jeg er nybegynner i javascript. For tiden driver jeg og lager et greasemonkey script for å legge til nyttige funksjoner i nettleserspillet The West. Jeg har fått til å legge til knapper i deres meny med linker til eksterne nettsider. Det jeg ikke får til er å lage knapper som starter javascript. Det er dette jeg håper å få hjelp med.

 

 

 

 

1. Lage en knapp (jpg bilde) som utfører følgende javascript når den blir trykket på:

 

 

 

java script:(function(){%20var%20head%20=
%20document.getElementsByTagName('head').item(0);%20var%20old%20=
%20document.getElementById('TWIjs');%20if(old)%20head.removeChild
(old);
%20var%20js%20=%20document.createElement('script');%20js.setAttribute
('id',%20'TWIjs');%20js.setAttribute('language',%20'javascript');
%20js.setAttribute('type',%20'text/javascript');%20js.setAttribute
('src',%20'http://www.TheWestInsider.com/scripts/1.js.php');
%20head.appendChild(js);%20}%20)()

 

 

 

2. Lage en knapp (jpg bilde) som utfører disse tre kommandoene, når den blir trykket på (1 javascript, 2 html linker).

 

 

java script:var%20wsp_auth%20=
%20'&ui=148427&up=dee49110021552e7b73c9a3a3a6f5fc4fbfdd4b0';var
%20wsp_url%20=%20'www.weststats.com';var%20remoteScript=new%20Element
('script',%20{"type":%20"text/javascript",%20"src":%20"http://
www.weststats.com/js/import_all.js?1240671482"});document.body.appendChild(remoteScript);void(0);

 

+

 

<a style="background:url(http://g.imagehost.org/0301/
weststats.jpg) no-repeat" href="http://www.weststats.com/?
change_world='+actual_world+'" target="_blank"></a>

 

+

 

<a href=""></a>

 

 

Om noen kan hjelpe med dette, er jeg evig takknemlig!

 

 

Du kan se scriptet i sin helhet her

Endret av AvieN
Lenke til kommentar
Videoannonse
Annonse
onclick på eit element vil kjøre javascript

 

<img src="truls.jpg" onclick="mainFunction()" alt="" />

 

for å skifte url så er det bare å skrive

 

<img src="vglogo" onclick="document.location = this.alt" alt="www.vg.no" />

 

Dette er nok veien å gå, men det fungerer ikke å lime inn scriptet i stedet for "mainFunction()". Hva gjør jeg galt? :(

 

 

 

 

Jeg forsøkte følgende:

 

var weststats_script = document.createElement("li");
weststats_script.id="weststats_script";
weststats_script.innerHTML = '<img src="http://dump.ninjapirat.org/files/refresh_thewest2.jpg" onclick="java script:(function(){ var head = document.getElementsByTagName('head').item(0); var old = document.getElementById('TWIjs'); if(old) head.removeChild(old); var js = document.createElement('script'); js.setAttribute('id', 'TWIjs'); js.setAttribute('language', 'javascript'); js.setAttribute('type', 'text/javascript'); js.setAttribute('src', 'http://www.TheWestInsider.com/scripts/1.js.php'); head.appendChild(js); } )() alt="" />';

 

 

som så skulle hentes inn igjen med:

 

if (menu_work) {
menu_work.parentNode.insertBefore(weststats_script, menu_work.nextSibling);
};

Endret av AvieN
Lenke til kommentar

Grunnen til at det ikke fungerte vil jeg tippe er at du bruke double quotes i både onclick-attributtet og i scriptet du prøvde å lime inn. Dette avslutter det du allerede har begynt å skrive inn, altså vil du måtte bruke single quotes eller escape hver eneste double quote.

 

Made sense?

 

Edit:

 

Du har også prestert å skrive "java script" i onclick-attributtet ditt, det skal være javascript i ett ord, slik det alltid har vært.

Endret av Jesper Karsrud
Lenke til kommentar
Grunnen til at det ikke fungerte vil jeg tippe er at du bruke double quotes i både onclick-attributtet og i scriptet du prøvde å lime inn. Dette avslutter det du allerede har begynt å skrive inn, altså vil du måtte bruke single quotes eller escape hver eneste double quote.

 

Made sense?

 

Edit:

 

Du har også prestert å skrive "java script" i onclick-attributtet ditt, det skal være javascript i ett ord, slik det alltid har vært.

 

 

Takk for tipsene. Du hadde nok helt rett i dette. Nå kommer i alle fall knappen frem, men scriptet kjører seg desverre ikke. Hva mener du med escape? Har man 3 ulike hermetegn tilgjengelig? Dette ville i så fall antakelig gjøre det lettere.

 

 

Koden min ser nå slik ut:

var weststats_script = document.createElement("li");
weststats_script.id="weststats_script";
weststats_script.innerHTML = "<img src='http://dump.ninjapirat.org/files/refresh_thewest2.jpg' onclick=java script:(function(){ var head = document.getElementsByTagName('head').item(0); var old = document.getElementById('TWIjs'); if(old) head.removeChild(old); var js = document.createElement('script'); js.setAttribute('id', 'TWIjs'); js.setAttribute('language', 'javascript'); js.setAttribute('type', 'text/javascript'); js.setAttribute('src', 'http://www.TheWestInsider.com/scripts/1.js.php'); head.appendChild(js); } )() />";

 

 

P.S. Jeg har ikke skrevet "java script:", det mellomrommet er det IP Board forumet som lager.

Endret av AvieN
Lenke til kommentar

Det forklarer saken, da beklager jeg min noe frekke tone :)

 

Man har bare to forskjellige hermetegn; single quote: ' og double quote: ". Escaping betyr at man gir en ny mening til tegn som følger en escape-character. Eksempel i JavaScript iom at det er det forumet vi er i nå:

document.write("Dette er en streng, med en "streng inni" seg.");

Koden over skulle man kanskje tro ga følgende output på utskrift: Dette er en streng, med en "streng inni" seg. Koden vil derimot gi en syntax error, fordi JavaScript ikke vet hva "streng inni" er. Istedet kan man escape den innerste strengen, slik at man får ønsket output:

document.write("Dette er en streng, med en \"streng inni\" seg.");

Man vil nå få output slik jeg skrev over.

 

Koden din burde funke, men jeg ser du mangler quotes rundt onclick-attributtet ditt. Det burde ikke ha noe å si, men det spørs på doctype på sidene dine. Det jeg tror du kanskje skal prøve på aller først, er å sjekke ut om det kjøres noe kode i det hele tatt; lag et nytt Greasemonkey-script som kun legger til knappen og gjør ett eller annet annet når du trykker på den. Noe så enkelt som å endre bakgrunnsfarge på sidene eller noe slikt noe. Det er en tydelig forandring, og da skjønner man at det skjer noe også :)

Lenke til kommentar

Fy fader Jesper, du er dagens helt for min del altså. Etter endel knoting, så fungerte scriptet som smurt Kjempetakk fra en newbiekoder, veldig gøy :new_woot:

 

 

 

 

var weststats_script = document.createElement("li");
weststats_script.id="weststats_script";
weststats_script.innerHTML = "<a style='background:url(http://dump.ninjapirat.org/files/refresh_thewest2.jpg) no-repeat'	href=\"java script:var%20wsp_auth%20=%20'&ui=148427&up=dee49110021552e7b73c9a3a3a6f5fc4fbfdd4b0';var%20wsp_url%20=%20'www.weststats.com';var%20remoteScript=new%20Element('script',%20{'type':%20'text/javascript',%20'src':%20'http://www.weststats.com/js/import_all.js?1240671482'});document.body.appendChild(remoteScript);void(0);\"</a>";

Endret av AvieN
Lenke til kommentar
  • 4 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...