Frage

Ich hatte den Eindruck, dass ich das „Protokoll“ nur angeben muss, wenn ich JavaScript in URL-Attributen verwende, beispielsweise in hrefs.Ist dies der einzige „nützliche“ Kontext für? javascript:?

Vernünftig:

<a href="javascript:alert('Hello')">World!</a>

Dumm:

<form onsubmit="javascript:alert('oops!')">

Ist das richtig?Oder gibt es einen obskuren Fehler/Anwendungsfall, den ich beachten muss?

War es hilfreich?

Lösung

Das javascript: Pseudo-Protokoll auf Event-Handlern wird nur ignoriert, Sie brauchen es nicht, die JavaScript-Engine wird interpretieren javascript: Als ein Label -Anweisung.

Ein Etikett bietet lediglich eine Kennung für eine Erklärung und ermöglicht es Ihnen, an anderer Stelle in Ihrem Programm zu verweisen.

IMHO, dieses Pseudo-Protokoll ist nur für Lesezeichen nützlich ...

Empfohlener Artikel:

Andere Tipps

Vermeiden Sie, wie bereits in anderen Antworten erwähnt, die Verwendung von javascript: href-Links, und es ist in Event-Handler-Attributen völlig unnötig.Allerdings seitdem A Da Tags manchmal semantisch immer noch korrekt sind, müssen Sie etwas hinzufügen href Attribut, wenn Sie Ihr möchten :link Und :hover CSS-Stile, die im Internet Explorer auf das Element angewendet werden sollen.In diesem Fall verwenden Sie:

<a href="#" onclick="doSomething(); return false;">Link</a>

Oder

<a href="javascript://" onclick="doSomething();">Link</a>

Es gibt einen (etwas obskuren) Fehler mit dem Javascript Protokoll - Im Internet Explorer* geht es davon aus, dass Sie die Seite verlassen, wenn Sie auf den Link klicken.Wenn Sie verwenden window.onbeforeunload, dann wird zu diesem Zeitpunkt Ihre Wegnavigationsnachricht angezeigt.Allein aus diesem Grund haben wir aufgehört, das zu verwenden Javascript Protokoll vollständig, sodass dieser Fehler nicht auftritt, da wir vergessen haben, darauf zu achten, wenn wir einer Seite eine Wegnavigationsnachricht hinzufügen.


* Ich hätte wahrscheinlich die Version angeben sollen, als ich das zum ersten Mal schrieb.Ich erinnere mich überhaupt nicht mehr, aber für den Fall, dass der Fehler nur in einem inzwischen größtenteils nicht mehr funktionierenden Browser wie IE 6 oder 7 auftritt, ist es wahrscheinlich am besten, ihn selbst zu testen.

Geben Sie es überhaupt nicht an. Es ist falsch, es zu tun <a> Tags, die stattdessen so codiert werden sollten:

<a href='#' onclick='alert("Hello")'>World</a>

Es ist ein Überrest von vergangenen Tagen. Das einzige Mal, dass ich mir vorstellen kann, wo es verwendet wird, würde sich in der Browseradressleiste (und Lesezeichen -Lesezeichen) befinden. Halten Sie es von Ihren Seiten fern.

In der Praxis haben Sie Recht.

Sie müssen dies in jedem Fall tun, in dem etwas anderes als Skript erwartet wird. Theoretisch können Sie kleben javascript:whatever Überall, wo Sie eine URL verwenden können, wurde dies jedoch nie unterstützt und wird jetzt offiziell gegen den Gebrauch empfohlen.

Jedoch, Sie sollten wirklich nicht verwenden javascript: überhaupt. Für Links können Sie die verwenden onclick Attribut. Was heutzutage tatsächlich passiert, ist die JavaScript -Engine identifiziert javascript: Als Etikett wird der Code ausgeführt.

Ihr solltet alle vorbeischauenhttp://bytes.com/topic/javascript/answers/504856-javascript-pseudo-protocol-event-handlersBesonders der Beitrag von „Lasse Reichstein Nielsen“, denn die meisten Antworten hier sind in irgendeiner Weise falsch.

Denken Sie auch daran, dass für den Ankertag überhaupt kein href erforderlich ist!Das ist<a>hi</a> ist gültiges xhtml.Das Problem bei der Verwendung href="#" ist, dass es zum Seitenanfang scrollen kann.es wird einfach nicht benötigt.Wenn Sie das Verhalten des Ankertags eigentlich nicht möchten, sollten Sie ihn nicht verwenden.Sie können einen Anker mit CSS simulieren (cursor:pointer) und Ereignisse wie Mouseenter und Mouseleave (was mehr Arbeit bedeutet, aber das erwartete Verhalten eines Ankertags nicht „bricht“).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top