Javascript (Greasemonkey) - Button drücken, wenn geladen

Als Fortsetzung zu diesem Thread hier:
viewtopic.php?f=9&t=24091&p=360260#p360260
suche ich nun ne Lösung für einen Button der erst später geladen wird

Quellcode:

<div id="buttonNext">
<div id="navnexthell" style="display: none;">
<img src="../templates/default_2011/images/navi/seite_weiter_k_german_hell.png">  </img>
</div>
<div id="navnext" style="display: block;">
<a href="https://baw.estargmbh.de/admin/render.php?plid=5&page_id=16033&show_question_nummer=&loesungsstring=&only_thisfolder=&lang=german">
<img border="0" alt="NEXT" src="https://baw.estargmbh.de/templates/default_2011/images/navi/seite_weiter_k_german.png">
</img>
</a>
</div>
</div>

Zuerst ist erst navnexthell da und das wird nach ein paar Sekunden durch navnext ersetzt.
Kann mir da wer weiterhelfen?

Wenn du weißt wieviel später das ungefähr ist verzöger das Klicken doch. Oder polle das DOM alle 100ms ob der Button da ist und wenn ja click()

Vielen Dank

Wie “polle” ich denn den “Dom”?

window.setTimeout

Danke, der Timer stimmt jetzt, aber das Klick irgendwie nicht.

window.helloworld = function() {
// alert(‘Hello world!’);
/*var evt = document.createEvent (“HTMLEvents”);
evt.initEvent (“click”, true, true);
document.getElementById(‘buttonNext’).dispatchEvent (evt);
*/
var button = document.getElementById(navnext);
button.addEventListener(‘click’, myFunction, false);
}

window.setTimeout(“helloworld()”, 3500);

[quote=“jokergermany.de.vu”]Danke, der Timer stimmt jetzt, aber das Klick irgendwie nicht.

[code]window.helloworld = function() {
var button = document.getElementById(navnext);
button.addEventListener(‘click’, myFunction, false);
}

window.setTimeout(“helloworld()”, 3500);[/code][/quote]

Ist navnext eine globale Variable? Ansonsten tu Anführungszeichen drum. Was passiert denn? Tu dir mal debugging-Ausgaben rein.

Keine Ahnung, das ist der Quelltext des Buttons in der Seite:

<div id="buttonNext">
<div id="navnexthell" style="display: none;">
<img src="../templates/default_2011/images/navi/seite_weiter_k_german_hell.png">  </img>
</div>
<div id="navnext" style="display: block;">
<a href="https://baw.estargmbh.de/admin/render.php?plid=5&page_id=16033&show_question_nummer=&loesungsstring=&only_thisfolder=&lang=german">
<img border="0" alt="NEXT" src="https://baw.estargmbh.de/templates/default_2011/images/navi/seite_weiter_k_german.png">
</img>
</a>
</div>
</div>

Warten muss ich jetzt nicht mehr, weil ich das verursachende Script einfach kille.

Mein Momentaner Quellcode:

window.onload = function() {
	var d = document;	// shorthand
	var scripts = d.getElementsByTagName('script');
	for(var i = 0; i < scripts.count; i++) {
		if(scripts[i].src.indexOf('swfobject.js') != -1) {
			scripts[i].src = '';
		}
	}
}
helloworld = function() {
     var button = document.getElementById("navnext");
     button.addEventListener('click', myFunction, false);
}
helloworld()

Fehleremeldung wenn naxnext in hochkommata:

/*
Exception: myFunction is not defined
helloworld@Scratchpad/1:31
@Scratchpad/1:33
*/

Fehleremeldung wenn naxnext nicht in hochkommata

/*
Exception: navnext is not defined
helloworld@Scratchpad/1:30
@Scratchpad/1:33
*/

Wenn du eine Funktion myFunction aufrufst sollte die natürlich auch irgendwo definiert sein :wink:

Fuck, hab denn Quelltetext nur kopiert, weil ich dachte der klickt einfach nur aufs objekt…

Hab was gefunden, das funktioniert^^^

[code]for(var i=0;i<document.images.length;++i)
{
if(document.images[i].alt==‘NEXT’)
{
window.open(document.images[i].parentNode.href);

}

}[/code]

bloß

window.open(document.images[i].parentNode.href); öffnet einen neuen tab, es soll aber im selben fenster geöffnet werden

[quote=“jokergermany.de.vu” öffnet einen neuen tab, es soll aber im selben fenster geöffnet werden[/quote]

Dann schau doch mal in die Spezifikationen rein :slight_smile:
window.location

Danke window.location.assign(document.images[i].parentNode.href); war das Zauberwort =)

http://de.selfhtml.org/javascript schau dir doch mal ein paar Quellen an.

window.location ist ein Objekt und href das Attribut das dich interessiert http://de.selfhtml.org/javascript/objekte/location.htm.

// [Weiter Button sofort einblenden]
window.onload = function() {
var d = document; // shorthand
var scripts = d.getElementsByTagName(‘script’);
for(var i = 0; i < scripts.count; i++) {
if(scripts[i].src.indexOf(‘swfobject.js’) != -1) {
scripts[i].src = ‘’;
}
}

}
// [/Weiter Button sofort einblenden]

for(var i=0;i<document.images.length;++i)
{
if(document.images[i].alt==‘NEXT’)
{
window.location.assign(document.images[i].parentNode.href);

}
}

Wenn ich jetzt das hier dazwischen packe:

var frageNr = document.getElementsByName('show_question_nummer')[0].value; var i=0 while(document.getElementsByName('denequa_'+frageNr+'_aw_'+i)) { var x = document.getElementsByName('denequa_'+frageNr+'_aw_'+i)[0].value; if (x == '1') { document.getElementsByName('denequa_'+frageNr+'_loesung_'+i)[0].checked = "checked"; } i++; }
Dann bekomme ich folgenden Fehler:

/* Exception: document.getElementsByName(...)[0] is undefined @Scratchpad/1:27 */

Dann ist das wohl nicht definiert - mal auf der Konsole geloggt?
Der Code nützt mir so gar nichts. Poste entweder alles oder mach nen jsfiddle oder stell’s online.

Kann es nicht online stellen, da man dafür zugangsdaten braucht und es nicht von mir kommt…

Habs aber gefunden.
Problem war, dass es bestimmte Elemente nicht auf allen Seiten gab und dann hat das Script komplett den Dienst verweigert.
Habe das mit ner IF-Bedingung abgefangen.

Ein Problem habe ich noch:
Am Ende muss ein fragebogen ausgefüllt werden. (PHP) und dort heißt der Weiterbutton nur [code]

                           <input type="image" src="../templates/default_2011/images/navi/seite_weiter_k_german.png" alt="Seite vor" />

                                                                    </div>
            <!--  ####### Ende Button VOR ########## //-->[/code]

Woher weiß ich denn wo der Button eignetlich hinführt?

Der Button wird vermutlich in einem Formular stehen und das Formular wird wahrscheinlich ein Attribut “action” haben :slight_smile:

Wie immer scheinst du recht zu haben:

Bein gerade am googlen wie ich das Formular absenden kann.

€dit:
ok, dass das Formular keinen Namen hat macht Probleme… -__-

Fuck, hab denn Quelltetext nur kopiert, weil ich dachte der klickt einfach nur aufs objekt…


Tipps:über das Spiel FIFA irgendwelche Probleme und Not sowie einige FIFA Coins kaufen Nachfrage und Diskussionen FIFAUTC.COM freut sich, Ihre Fragen zu beantworten. Besuchen Sie unsere Homepage 24 Stunden Interaktion der Spieler! fifautc.com