2009-01-10 8 views

Respuesta

14

Se le dice al navegador para mostrar el resultado de ejecutar la cadena vacía literal. Por lo tanto, solo mostraría una cadena vacía.

Puede probar el efecto de esto escribiendo javascript:'http://stackoverflow.com'; en la barra de direcciones de una ventana/pestaña normal. Obtendrá una página en blanco que dice "http://stackoverflow.com" y no será llevado a esa URL.

Esta es la razón por la que los bookmarklets a menudo envuelven el código dentro de void() o una función anónima que no devuelve nada para evitar que el navegador intente mostrar el resultado de la ejecución del bookmarklet. Por ejemplo:

javascript:void(window.open("dom_spy.html")) 

O:

javascript:(function() { window.open("dom_spy.html"); })() 

Si utiliza directamente el código que devuelve algo (una nueva instancia de la ventana en este caso), el navegador va a terminar mostrando que:

javascript:window.open("dom_spy.html"); 

En Firefox, lo anterior mostrará:

[object Window]
+7

Tenga en cuenta que no TODO necesita ser envuelto en un vacío. El navegador intentará mostrar el retorno de la última declaración para que pueda hacer cualquier cosa siempre que la última declaración no devuelva nada, p. javascript: (función hello (msg) {return msg;}) ('BOO!'); void (0); – James

+0

@JimmyP: ¡Gracias por señalar eso! –

1

Según mi leal saber y entender, el atributo src se mapea en los elementos iframelocation.href. Por lo que establecer src a javascript:''; es un poco absurdo y el navegador hará una de dos cosas:

  • ignorarlo porque no es un URI y no resuelve a cualquier recurso visualizable
  • ejecutar el código JavaScript que produjo nada

De cualquier manera, logra muy poco. ¿Este código es heredado o está tratando de hacer algo complicado con el iframe?

+0

heredado. ¿Qué papel juega el path_src? – cbrulak

+1

@cbrulak no hace nada. es algo que está usando otro marco. – Pacerier

Cuestiones relacionadas