Pregunta

Yo tenía la impresión de que sólo debe indicar el "protocolo" cuando se utiliza en la URL JavaScript atributos, tales como en hrefs. Es este el único contexto "útil" para javascript:?

Sensible:

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

tonta:

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

¿Es esto así? ¿O hay algún error oscuro caso / uso que necesito para tener en cuenta?

¿Fue útil?

Solución

El javascript: pseudo-protocolo sobre los controladores de eventos sólo será ignorado, que no lo necesita, el motor JavaScript interpretará como una javascript: Declaración de etiquetas .

Una etiqueta simplemente proporciona un identificador de un comunicado, y permite hacer referencia a ella en otra parte de su programa.

mi humilde opinión, este pseudo-protocolo sólo es útil para bookmarklets ...

Artículo recomendado:

Otros consejos

Como han mencionado otras respuestas, evitar el uso de enlaces javascript: href, y es totalmente innecesario en los atributos de controlador de eventos. Sin embargo, ya que las etiquetas son a veces todavía A semánticamente correcta, tendrá que poner algo en el atributo href si desea que su :link y estilos :hover CSS para aplicarlos al elemento en Internet Explorer. En este caso, utilice:

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

o

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

Hay un error (algo oscura) con el protocolo javascript - en Internet Explorer *, se pensará que está saliendo de la página al hacer clic en el enlace. Si está utilizando window.onbeforeunload , a continuación, su mensaje de despedida navegar aparecerá en este momento. Sólo por esta razón, hemos dejado de utilizar el javascript protocolo completo para que no tenemos este error aparece porque nos olvidamos para comprobar que cuando añadimos un mensaje de navegar lejos a alguna página.


* Probablemente debería haber especificado la versión de la primera vez que escribió esto. No recuerdo en absoluto, pero por si acaso el error está presente sólo en un navegador ahora en su mayoría desaparecida como IE 6 o 7, que es probablemente el mejor para probarlo tú mismo.

no se especifica en absoluto, nunca. Es incorrecta de hacerlo en las etiquetas <a>, que en su lugar debería codificarse como esto:

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

Es un remanente de los días pasados. La única vez que puedo pensar en donde se utiliza estaría en la barra de direcciones del navegador (y marcadores bookmarklet). Mantenerlo fuera de sus páginas.

En la práctica, estás en lo correcto.

Se necesita hacer esto en cualquier caso en que se espera algo distinto de la escritura. En teoría, puede pegarse javascript:whatever cualquier lugar se puede utilizar una dirección URL, pero esto nunca fue apoyado y ahora está oficialmente recomendado contra el uso.

Sin embargo , que realmente no debería utilizar javascript: en absoluto. Para los enlaces, puede utilizar el atributo onclick. Lo que está sucediendo hoy en día es el motor de JavaScript es la identificación de javascript: como una etiqueta, por lo que se ejecuta el código.

Se debe comprobar fuera de toda http://bytes.com/topic/javascript/answers / 504856-javascript-pseudo-protocolo-Event-manipuladores Especialmente el cargo por "Lasse Nielsen Reichstein", porque la mayoría de las respuestas están aquí son incorrectos de alguna manera.

Asimismo, recuerda que la etiqueta de anclaje no requiere a href en absoluto! Es decir <a>hi</a> es XHTML válido. El problema usando href="#" es que puede desplazarse a la parte superior de la página .. simplemente no es necesario. Por último, si en realidad no desea que el comportamiento de la etiqueta de anclaje que no se debe utilizar. Se puede simular un ancla con css (cursor:pointer) y eventos como MouseEnter y mouseleave (que es más trabajo, pero no lo hace "romper" el comportamiento que se espera de una etiqueta de anclaje).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top