javascript - than - vuejs typescript tutorial




Was ist der Zweck(falls vorhanden) von "javascript:" in Event-Handler-Tags? (7)

onchange="javascript: myFunction(this)" es einen nennenswerten Unterschied zwischen: onchange="javascript: myFunction(this)" und onchange="myFunction(this)" ?

Angenommen, Sie meinten, href="javascript: myFunction(this)" , ja, es gibt, vor allem beim Laden von Inhalten mit dem Javascript. Die Verwendung des javascript: pseudo-Protokolls macht den Inhalt für einige Menschen und alle Suchmaschinen unzugänglich, während die Verwendung eines echten href und dann das Ändern des Verhaltens des Links mithilfe von Javascript den Inhalt zugänglich macht, wenn JavaScript deaktiviert oder in dem bestimmten Client nicht verfügbar ist.

Ich habe eine konzertierte Anstrengung unternommen, um meine Javascriptfähigkeiten in letzter Zeit zu verbessern, indem ich so viel JavaScript-Code lese, wie ich kann. Dabei habe ich manchmal das javascript: -Präfix gesehen, das an die Front von Event-Handler-Attributen in HTML-Element-Tags angehängt ist. Was ist der Zweck dieses Präfix? Gibt es einen wesentlichen Unterschied zwischen:

onchange="javascript: myFunction(this)"

und

onchange="myFunction(this)"

?


Es sollte nicht in Ereignishandlern verwendet werden (obwohl die meisten Browser defensiv arbeiten und Sie nicht bestrafen). Ich würde auch argumentieren, dass es nicht im href-Attribut eines Ankers verwendet werden sollte. Wenn ein Browser JavaScript unterstützt, verwendet er den ordnungsgemäß definierten Ereignishandler. Wenn ein Browser dies nicht tut, wird ein JavaScript: Link fehlerhaft angezeigt. IMO, es ist besser, sie auf eine Seite zu verweisen, die erklärt, dass sie Javascript aktivieren müssen, um diese Funktionalität zu verwenden, oder besser noch eine von JavaScript nicht benötigte Version der Funktionalität. Also, etwas wie:

<a href="non-ajax.html" onclick="niftyAjax(); return false;">Ajax me</a>

Edit: Dachte über einen guten Grund, Javascript zu benutzen :. Bookmarklets. Zum Beispiel sendet dieser Sie zu Google Reader, um die RSS-Feeds für eine Seite anzuzeigen:

var b=document.body;
if(b&&!document.xmlVersion){
  void(z=document.createElement('script'));
  void(z.src='http://www.google.com/reader/ui/subscribe-bookmarklet.js');
  void(b.appendChild(z));
}else{
  location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href)
}

Damit ein Benutzer dieses Bookmarklet einfach hinzufügen kann, würden Sie es wie folgt formatieren:

<a href="javascript:var%20b=document.body;if(b&&!document.xmlVersion){void(z=document.createElement('script'));void(z.src='http://www.google.com/reader/ui/subscribe-bookmarklet.js');void(b.appendChild(z));}else{location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href)}">Drag this to your bookmarks, or right click and bookmark it!</a>

Es sollte nur im href-Tag verwendet werden.

Das ist lächerlich.

Der akzeptierte Weg ist dies:

<a href="/non-js-version/" onclick="someFunction(); return false">Blah</a>

Aber um das OP zu beantworten, gibt es im Allgemeinen keinen Grund, javascript: zu verwenden javascript: mehr. In der Tat sollten Sie das JavaScript-Ereignis aus Ihrem Skript anhängen und nicht in das Markup inline. Aber das ist eine puristische Sache, denke ich :-D


Der Ursprung von javascript: in einem Event-Handler ist eigentlich nur eine IE-spezifische Sache, so dass Sie die Sprache zusätzlich zum Handler angeben können. Dies liegt daran, dass vbscript auch eine unterstützte Skriptsprache für die Clientseite in IE ist. Hier ist ein Beispiel für "vbscript:" .

In anderen Browsern (wie Shadow2531 schon sagt) ist javascript: nur ein Label und wird grundsätzlich ignoriert.

href="javascript:..." kann in Links verwendet werden, um JavaScript-Code auszuführen, wie DannySmurf darauf hinweist.


Ich bin keine Autorität in JavaScript, und vielleicht mehr ein Dummkopf als der Fragesteller, aber AFAIK, der Unterschied ist, dass das javascript: Präfix in URI-Kontexten bevorzugt / erforderlich ist, wobei das Argument auch eine traditionelle HTTP-URL wie ein sein kann JavaScript-Auslöser

Also, meine intuitive Antwort wäre, dass, da onChange JavaScript erwartet, das javascript: onChange überflüssig ist (wenn nicht sogar falsch). Sie können jedoch javascript:myFunction(this) in Ihre Adressleiste schreiben, und diese Funktion wird ausgeführt. Ohne javascript: würde Ihr Browser versuchen, myFunction(this) als URL zu interpretieren und versucht, die DNS-Informationen abzurufen, zu diesem Server zu myFunction(this) usw.


Ich weiß nicht, ob das Präfix javascript: irgendetwas in den onevent Attributen bedeutet, aber ich weiß, dass es bei Anker-Tags nervt, wenn man versucht, den Link in einem neuen Tab zu öffnen. Der href sollte als href verwendet werden und niemals Javascript an Links anhängen.


@mercutio

Das ist lächerlich.

Nein, es ist nicht lächerlich, Javascript: ist ein Pseudo-Protokoll, das in der Tat nur als Thema einer Verbindung verwendet werden kann, also hat er recht. Ihr Vorschlag ist in der Tat besser, aber der beste Weg ist, unauffällige JavaScript-Techniken zu verwenden, um HTML-Elemente zu durchlaufen und programmgesteuert Verhalten hinzuzufügen, wie es in Bibliotheken wie jQuery verwendet wird.





javascript