2010-11-12 17 views
70

¿Es posible llamar a una función javascript desde la URL?Llamar a la función de Javascript desde la barra URL/dirección

Algo así como: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

Sé que si se pone javascript:alert("Hello World"); en la barra de direcciones que va a funcionar.

Sospecho que la respuesta a esto es no, pero me preguntaba si había alguna manera de hacerlo.

+2

¿Qué comportamiento sería su URL tiene que mostrar - hacer que desea ejecutar Javascript en el contexto de ese sitio? –

+0

El 'http:' al comienzo del URI le dice al navegador "Quiero que haga una solicitud HTTP", por lo que la solicitud HTTP lo hace. No hay forma de evitarlo, creo. – Constantin

+6

Si pego 'javascript: alert (" Hi ");' en mi barra de direcciones de Firefox (28.0) y presiono Enter, no pasa nada. Tal vez esto ha sido deshabilitado? ... Sí, aparentemente se ha desactivado porque los idiotas podrían convencerse de pegar algo en su barra de direcciones. Se encontró la información aquí: http://stackoverflow.com/a/18782801/111036 – mivk

Respuesta

45

No existe un hipervínculo, no. No a menos que la página tenga una secuencia de comandos dentro específicamente para esto y esté buscando algún parámetro ... pero para su pregunta, no, no hay soporte incorporado en los navegadores para esto.

Sin embargo, hay bookmarklets que puede marcar para ejecutar rápidamente funciones de JavaScript desde la barra de direcciones; no estoy seguro si eso satisface tus necesidades, pero está lo más cerca posible.

+0

Básicamente estoy tratando de aprovechar los métodos de JS en una página que no tengo acceso a la fuente. – DazManCat

8

/test.html#alert('heello ')

test.html 
<button onClick="eval(document.location.hash.substring(1))">do it</button> 
+8

Tenga en cuenta que esta evaluación del usuario es una práctica muy peligrosa y, por lo general, no se debe permitir. – domenukk

+4

Sí, esto es bastante loco. Hay lugares de trabajo donde te despedirían por este tipo de locura. Si no sabe por qué permitir que su sitio web ejecute javascript arbitrario proporcionado por el usuario como si fuera su propio javascript, entonces debería buscar un nuevo trabajo o obtener capacitación. – Jacob

+4

Esto lleva a problemas reflejados de scripts entre sitios (XSS) como lo señala @ domenukk. – pavanw3b

4

también se puede colocar el followinng

<a href='javascript:alert("hello world!");'>Click me</a> 

a su código HTML, y al hacer clic en 'Haga clic en mí' hipervínculo, javascript aparecerá en url-bar y de diálogo Alerta mostrará

+4

* JavaScript aparecerá en la barra de URL * en qué navegador? Nunca he visto eso. (Sé que javascript: los enlaces funcionan, solo estoy hablando de la barra de URL) –

+0

Yo tampoco. Sé que puede escribir JS en la barra de direcciones – DazManCat

+0

Esto es lo que estaba buscando, ¿cómo se llama? – ThorSummoner

2

puede utilizar como esta situación: por ejemplo, usted tiene una página: http://www.example.com/page.php entonces en ese page.php, inserte el código:

if (!empty($_GET['doaction']) && $_GET['doaction'] == blabla){ 
echo '<script>alert("hello");</script>'; 
} 

entonces, cada vez que visita esta url: http://www.example.com/page.php?doaction=blabla

continuación, la alerta se llamará automáticamente.

13

Escribe en la barra de direcciones

javascript:alert("hi"); 

Asegúrese de escribir en el principio: javascript:

1

Sobre la propiedad window.location.hash:

devolver la pieza de anclaje de una URL.


Ejemplo 1:

//Assume that the current URL is 

var URL = "http://www.example.com/test.htm#part2"; 

var x = window.location.hash; 

//The result of x will be: 

x = "#part2" 

Exmaple 2:

$(function(){ 
    setTimeout(function(){ 
     var id = document.location.hash; 
     $(id).click().blur(); 
    }, 200); 
}) 

Ejemplo 3:

var hash = "#search" || window.location.hash; 
window.location.hash = hash; 

switch(hash){ 
case "#search": 
    selectPanel("pnlSearch"); 
    break;  
case "#advsearch":  

case "#admin": 

} 
0

Usando la respuesta de Eddy funcionó muy así como tuve el mismo problema. Simplemente llame a su URL con los parámetros: "www.mypage.html # myAnchor"

Luego, en mipagina.html:

$(document).ready(function(){ 
    var hash = window.location.hash; 
    if(hash.length > 0){ 
    // your action with the hash 
    } 
}); 
Cuestiones relacionadas