Lade-Fortschritt einer Html-Datei prüfen
Raik
- javascript
hallo! :-)
ich möchte ein bookmarklet für das login bei web.de bauen.
gmx unterstützt auch die get-methode, deshalb hab ich mir da einfach eine url mit allen formulardaten gebastelt, mit der ich die anmeldung per click auf das bookmark vollziehe.
bei web.de hab ich damit keinen erfolg gehabt, deshalb jetzt der versuch, das anmeldeformular per script auszufüllen und abzusenden. (scheinbar werden da per header cookies gelesen und/oder geschrieben, weshalb die seite erst frisch vom server geladen werden muss.)
wie ich die seite per script im browser aufrufe und auf die entsprechenden input-elemente zugreife, ist mir klar.
das problem ist das prüfen der existenz des formulars und der eingabeelemente.
damit das login funktioniert, muss das ganze formular geladen sein, auf das laden der bilder muss ich aber nicht warten.
1. frage: existiert das formular für den browser schon, wenn nur das anfangstag geladen wurde oder erst, wenn das schliessende tag geladen wurde?
2. frage: muss ich (z.b. mit einer while-schleife und darin einem timeout) wiederholt prüfen, ob der ladezustand der seite schon ausreicht, um das formular zu befüllen und abzuschicken oder gibt es da auch eine andere möglichkeit der überwachung?
als kleines beispiel eines bookmarklets für den ie mal dieses:
javascript:a=document.getElementsByTagName('textarea')[0];a.removeAttribute('cols');a.style.removeAttribute('height');a.style.setAttribute('width','100%');b=a.getAttribute('rows');a.setAttribute('rows',((b<20)?20:b+10))
damit vergrössere ich mir auf verschiedenen boards und foren die textarea zum posting schreiben, weil mir die meist arg zu klein ist.
einfach als favorit abspeichern und dann mal auf so einer seite anclicken. es gibt sicherlich seiten, wo es nicht richtig funktioniert (z.b. wegen einer umgebenden tabelle mit fester breite), aber meist klappt es.
mit freundl. grüssen aus berlin, raik
Hi,
ich möchte ein bookmarklet für das login bei web.de bauen.
gmx unterstützt auch die get-methode, deshalb hab ich mir da einfach eine url mit allen formulardaten gebastelt, mit der ich die anmeldung per click auf das bookmark vollziehe.
bei web.de hab ich damit keinen erfolg gehabt, deshalb jetzt der versuch, das anmeldeformular per script auszufüllen und abzusenden. (scheinbar werden da per header cookies gelesen und/oder geschrieben, weshalb die seite erst frisch vom server geladen werden muss.)
Ich kann mir schlecht vorstellen, dass das Login bei web.de nur funktioniert, wenn man vorher einen Cookie akzeptiert hat. Mangels Account kann ich das aber auch nicht testen.
wie ich die seite per script im browser aufrufe und auf die entsprechenden input-elemente zugreife, ist mir klar.
das problem ist das prüfen der existenz des formulars und der eingabeelemente.damit das login funktioniert, muss das ganze formular geladen sein, auf das laden der bilder muss ich aber nicht warten.
- frage: existiert das formular für den browser schon, wenn nur das anfangstag geladen wurde oder erst, wenn das schliessende tag geladen wurde?
- frage: muss ich (z.b. mit einer while-schleife und darin einem timeout) wiederholt prüfen, ob der ladezustand der seite schon ausreicht, um das formular zu befüllen und abzuschicken oder gibt es da auch eine andere möglichkeit der überwachung?
Natürlich könntest du in einer Funktion (eine while-Schleife eignet sich nicht, weil die nicht auf einen Timeout wartet) prüfen, ob das Formular schon verfügbar ist, und wenn nicht, würde die Funktion sich nach einem Timeout selbst wieder aufrufen.
Du mußt aber ja nicht warten, denn du kennst das Formular und kannst dieses fertig ausgefüllt in die Seite schreiben und abschicken. Am einfachsten vielleicht so:
document.body.innerHTML='<form ... > ... [alle inputs mit entsprechendem value] ... </form>';
document.forms[0].submit();
Wenn unter "action" der komplette Pfad eingetragen ist, würde ich annehmen, dass du das Bookmarklet dann von jeder beliebigen Seite aus starten kannst (sofern web.de den Referer nicht überprüft). Probier es halt einfach mal aus...
Grüße, Stefan
hallo
Ich kann mir schlecht vorstellen, dass das Login bei web.de nur funktioniert, wenn man vorher einen Cookie akzeptiert hat. Mangels Account kann ich das aber auch nicht testen.
war auch ein irrtum von mir. vorhergehende versuche haben nicht funktioniert, weshalb ich annahm, bestimmte bedingungen würden sich nur durch das laden der seite erfüllen lassen. bei web.de reicht zum glück eine url mit den entsprechenden parametern.
hotmail verlangt allerdings zwingend das vorherige laden der login-seite, weil dort cookies gesetzt werden. da muss ich also die geladene seite nutzen. gibt es denn einen (per bookmarklet einsetzbaren) eventhandler, der erst feuert, wenn die login-seite oder zumindest das anmeldeformular geladen ist, oder kann ich das nur per wiederholter prüfung der existenz bestimmter elemente der seite machen?
Du mußt aber ja nicht warten, denn du kennst das Formular und kannst dieses fertig ausgefüllt in die Seite schreiben und abschicken. Am einfachsten vielleicht so:
document.body.innerHTML='<form ... > ... [alle inputs mit entsprechendem value] ... </form>';
document.forms[0].submit();
jup, sowas hab ich woanders schon mal gemacht. :-)
ist nur dann nicht praktikabel, wenn die login-seite mit einer aktuellen session-id geladen wird, die ich dann verwenden müsste.
BTW: suuuperfett, absolut genial dein "Self+"-script!!! :-D
bin schwer beeindruckt. herzlichen dank für die gute arbeit!
freundl. grüsse aus berlin, raik
Hi,
diesen Thread hatte ich ja ganz aus den Augen verloren...
gibt es denn einen (per bookmarklet einsetzbaren) eventhandler, der erst feuert, wenn die login-seite oder zumindest das anmeldeformular geladen ist, oder kann ich das nur per wiederholter prüfung der existenz bestimmter elemente der seite machen?
Onload kannst du natürlich setzen, solange die Seite noch lädt.
Vielleicht so?:
if(letztes_input_vorhanden)
form_ausfuellen_und_abschicken();
else
window.onload=form_ausfuellen_und_abschicken;
Wenn irgendein Bild hakt, ist die wiederholte Prüfung der relevanten Elemente aber sicher schneller.
IE kennt auch noch eine property readyState und einen onreadystatechange-Event (auch für <input>), mit dem man das sicher perfektionieren könnte.
Du mußt aber ja nicht warten, denn du kennst das Formular und kannst dieses fertig ausgefüllt in die Seite schreiben und abschicken. Am einfachsten vielleicht so:
document.body.innerHTML='<form ... > ... [alle inputs mit entsprechendem value] ... </form>';
document.forms[0].submit();jup, sowas hab ich woanders schon mal gemacht. :-)
ist nur dann nicht praktikabel, wenn die login-seite mit einer aktuellen session-id geladen wird, die ich dann verwenden müsste.
Tja, bei Sessions hat man wohl keine Chance.
BTW: suuuperfett, absolut genial dein "Self+"-script!!! :-D
bin schwer beeindruckt. herzlichen dank für die gute arbeit!
:)))
Grüße, Stefan