Jesus, glaub' mir, dass ich garantiert keine Hetzjagd auf dich am Laufen habe.
Zu deiner Sache mit dem Formular poste ich nachher nochmal was, ist mir jetzt um eine Sache klarer geworden...
Was die
open()-Methode des
window-Objektes betrifft - warum sowas in Links besser in der Form geschrieben werden sollte, wie ich sie hier wiedergegeben habe, steht im ersten Posting von mir dazu - diverse Gründe, die eigentlich einleuchten dürften.
Zu deiner Frage, was das Einfügen von JavaScript-Anweisungen in HTML-Code betrifft:
Es gibt diverse Möglichkeiten, JavaScript-Code funktionabel irgendwo zwischen HTML-Sourcecode zu packen - folgend:
- zwischen <script> und </script>, logisch
- externe *.js-Datei, die per <script src="..."></script> mit evtl. zusätzlichem archive-Attribut (und bitte nie vergessen, auch hier den Container-Tag per </script> zu schließen!)
- innerhalb von EventHandlern, die als Attribute für HTML-Elemente verwendet werden können, bspw. eben onClick oder onMouseOver
- in einer URL, der das spezielle javascript: -Pseudoprotokoll vorangestellt wird
- zwischen <style type="text/javascript"></style> in Form von JSS-Anweisungen
- in Form einer JavaScript-Einheit, die aber nur als Wertangabe für HTML-Attribute genutzt werden kann (durch &{ ... };-Syntax)
- bei konditionalen Kommentaren, die aber nicht alle Browser richtig interpretieren
Falls zu irgend einer von diesen Möglichkeiten Fragen bei jemandem bestehen, melde er sich in diesem Thread oder schweige für immer.
Speziell was deine Frage betrifft, Jesus, sollte kurz die Sache mit den Handlern und der
javascript: -URL angesprochen werden:
1) EventHandler:
EventHandler können innerhalb von HTML-Code ganz normal als Attribute für ein beliebiges Element angegeben werden, wie es bei den meisten von euch sicherlich auch der Usus ist, einfaches Beispiel:
PHP:
<body onLoad="alert('Ich bin ein Text, der erscheint, wenn das Dokument geladen wurde.');">
Wie hieraus ersichtlich wird, verlangt so eine EventHandler-als-Attribut-Schreibweise folgende Gliederung:
- Name des EventHandlers
- =
- Hochstriche (egal ob Anführungszeichen oder Hochkommas, sollte sich nach Umgebung richten)
- innerhalb der Hochstriche bloße JavaScript-Anweisungen
- optionales Semikolon (jedoch nicht optional, wenn mehrere Anweisungen hintereinander)
Machen wir's nicht komplizierter als es ist
und sagen an dieser Stelle, dass EventHandler in dem Falle einfache Attribute sind, denen ein String zugewiesen wird, der nur JavaScript-Anweisungen beinhaltet.
2)
javascript: -URLs:
Dieses Pseudoprotokoll kann in einer URL beliebigen JavaScript-Code mit dem JavaScript-Interpreter ausführen lassen.
Auch hier gilt:
Wenn mehrere Anweisungen gegeben werden, dann ist Trennung durch Semikolons obligatorisch!
Findet eben hauptsächlich Einsatz im
href-Attribut eines Link-Elements, bspw.:
PHP:
<a href="javascript:alert('Toll gemacht...')">Link</a>
Falls ein Rückgabewert in den JavaScript-Anweisungen gegeben wird, dann führt dieser Rückgabewert automatisch zum Wechsel des derzeitigen Dokumentes hin zum Rückgabewert - und genau das ist der Grund, warum sich viele oft wundern, dass bei PopUp-Links zwar ein PopUp geöffnet wird, aber auch das öffnende Dokument verschwindet und stattdessen ein [object] im Browserfenster erscheint.
Denn in diesem Falle liefert die
window.open()-Methode einen Rückgabewert, der aus einer Referenz zum
window-Objekt des neuen geöffneten Fensters besteht; dieser Rückgabewert wird dann von der Engine zum neuen Dokument für den Link, denn dieser ist ja eigentlich dazu da, um Dokumente in einem Browserfenster darzustellen.
Entweder muss in dem Fall dann darauf geachtet werden, dass *keine* der JavaScript-Anweisungen von sich aus einen Rückgabewert liefert, oder dass der Rückgabewert einen Wert annimmt, der nicht beim Seitenwechsel weiterverarbeitet werden könnte, bspw. der boolesche Wert
false oder das Schlüsselwort
undefined.
Das
href-Attribut eines Links mit JavaScript-Anweisungen zu belegen, *ohne* mit
javascript: - eindeutig folgenden JavaScript-Code einzuleiten, ist jedenfalls nicht zulässig und erzeugt Invalidität des Codes. (Toolkit hat also Recht)
Entweder in solchen Fällen als ein
href mit
javascript: -URL oder einen EventHandler nutzen - bei beidem ist jedoch darauf zu achten, dass evtl. Rückgabewerte der letzten JavaScript-Anweisung erfolgen und den Browser dazu führen können, das derzeitige Dokument ungewollt zu ändern.
Ich hoffe, das hier war verständlich geschrieben und die Schreibzeit hat sich gelohnt, wenn Fragen hierzu bestehen: bin gerne bereit, weitere Ausführungen dazu vorzunehmen...
Ich weiß, dass einige Wiederholungen vom Inhalt her drin waren, aber wollte das in dem Fall nicht umgehen, denn Fragen zu dem Thema kommen verdammt oft.
hth,
Geist
edit: "javascript:" bitte in Fällen, wo es auseinandergeschrieben wurde, als ganzen Term sehen, das trennt der Parser hier ja...