Domanda

Avevo l'impressione di dover specificare solo il "protocollo" quando utilizzo JavaScript negli attributi URL, come in hrefs.È questo l'unico contesto "utile" per javascript:?

Sensato:

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

Sciocco:

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

È giusto?Oppure c'è qualche bug/caso d'uso oscuro di cui devo essere a conoscenza?

È stato utile?

Soluzione

IL javascript: lo pseudo-protocollo sui gestori di eventi verrà solo ignorato, non ne hai bisogno, il motore JavaScript interpreterà javascript: come un Dichiarazione sull'etichetta.

Un'etichetta fornisce semplicemente un identificatore a un'istruzione e ti consente di farvi riferimento altrove nel tuo programma.

IMHO, questo pseudo-protocollo è utile solo per i bookmarklet...

Articolo consigliato:

Altri suggerimenti

Come menzionato in altre risposte, evitare l'uso di javascript: href collegamenti ed è del tutto superfluo negli attributi del gestore eventi.Tuttavia, da quando A i tag a volte sono ancora semanticamente corretti, dovrai inserire qualcosa nel file href attribuisci se vuoi il tuo :link E :hover Stili CSS da applicare all'elemento in Internet Explorer.In questo caso, utilizzare:

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

O

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

C'è un bug (un po' oscuro) con il file javascript protocollo: in Internet Explorer*, penserà che stai lasciando la pagina quando fai clic sul collegamento.Se stai usando window.onbeforeunload, a questo punto verrà visualizzato il messaggio di allontanamento.Solo per questo motivo, abbiamo smesso di usare il file javascript protocollo completamente in modo da non visualizzare questo bug perché ci siamo dimenticati di verificarlo quando aggiungiamo un messaggio di navigazione ad alcune pagine.


* Probabilmente avrei dovuto specificare la versione quando l'ho scritto per la prima volta.Non lo ricordo affatto, ma nel caso in cui il bug sia presente solo in un browser ormai quasi defunto come IE 6 o 7, probabilmente è meglio testarlo tu stesso.

Non specificarlo affatto, mai.E' sbagliato farlo dentro <a> tag, che invece dovrebbero essere codificati in questo modo:

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

È un residuo dei tempi passati.L'unica volta che riesco a pensare a dove viene utilizzato è nella barra degli indirizzi del browser (e nei segnalibri del bookmarklet).Tienilo fuori dalle tue pagine.

In pratica hai ragione.

È necessario farlo in ogni caso in cui è previsto qualcosa di diverso dallo script.In teoria puoi restare javascript:whatever ovunque sia possibile utilizzare un URL, ma questo non è mai stato supportato e ora è ufficialmente sconsigliato l'uso.

Tuttavia, davvero non dovresti usarlo javascript: affatto.Per i collegamenti è possibile utilizzare il file onclick attributo.Ciò che sta realmente accadendo al giorno d'oggi è che il motore JavaScript si sta identificando javascript: come etichetta, motivo per cui il codice viene eseguito.

Dovreste controllare tuttihttp://bytes.com/topic/javascript/answers/504856-javascript-pseudo-protocol-event-handlersSoprattutto il post di "Lasse Reichstein Nielsen", perché la maggior parte delle risposte qui sono in qualche modo errate.

Ricorda inoltre che il tag di ancoraggio non richiede affatto un href!Questo è<a>hi</a> è valido xhtml.Il problema dell'utilizzo href="#" è che potrebbe scorrere fino all'inizio della pagina..semplicemente non è necessario.Infine, se non desideri effettivamente il comportamento del tag di ancoraggio, non dovresti usarlo.Puoi simulare un'ancora usando css (cursor:pointer) ed eventi come mouseenter e mouseleave (che richiede più lavoro, ma non "interrompe" il comportamento previsto di un tag di ancoraggio).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top