Llamar a la función Javascript desde la barra de direcciones / URL

112

¿Es posible llamar a una función de JavaScript desde la URL? Básicamente, estoy tratando de aprovechar los métodos JS en una página a la que no tengo acceso a la fuente.

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

Sé que si lo pones javascript:alert("Hello World");en la barra de direcciones funcionará.

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

DazManCat
fuente
3
¿Qué comportamiento tendría que mostrar su URL? ¿Quiere ejecutar Javascript en el contexto de ese sitio?
Pekka
El http:al comienzo del URI le dice al navegador "Quiero que hagas una solicitud HTTP", por lo que la solicitud HTTP lo hace. No hay forma de evitarlo, creo.
Constantin
7
Si pego javascript:alert("Hi");en la barra de direcciones de mi Firefox (28.0) y presiono Enter, no pasa nada. ¿Quizás esto ha sido desactivado? ... Sí, aparentemente se ha desactivado porque se podría convencer a los idiotas de que peguen cualquier cosa en su barra de direcciones. Encontré la información aquí: stackoverflow.com/a/18782801/111036
mivk
1
copiar y pegar no funciona, pero si lo escribe, funciona, parece que no está deshabilitado, pero se analiza cuando se pega.
Bhabani Sankar Mishra
1
Nota: sólo funciona en Firefox cuando 1. estás en una página real (no vacía) y 2. pones explícitamente "javascript:" antes.
Andrew

Respuestas:

59

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

Sin embargo, hay marcadores que puede marcar para ejecutar rápidamente funciones de JavaScript desde su barra de direcciones; No estoy seguro de si eso satisface sus necesidades, pero es lo más parecido a lo que parece.

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

Escribir en la barra de direcciones

javascript:alert("hi");

Asegúrese de escribir al principio: javascript:

hfarazm
fuente
1
No funciona en Google Chrome versión 80.0.3987.132 (compilación oficial) (64 bits). Chrome elimina automáticamente el javascript:prefijo de la barra de direcciones.
stomy
2
@stomy Debe escribir javascript:manualmente, desafortunadamente
wjandrea
24

Puede utilizar URI de datos. Por ejemplo: data:text/html,<script>alert('hi');</script>

Para obtener más información, visite: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

yassine45
fuente
1
Siempre pensé que la URL de datos es solo para imágenes, gracias, esto es realmente increíble :)
Fareed Alnamrouti
2
no puede agregar esto a una URL.
vivek_23
Algunos navegadores pueden bloquear esto con un mensaje:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
Aleksandr Ryabov
Funciona en Google Chrome versión 80.0.3987.132 (compilación oficial) (64 bits).
stomy
funciona en Chrome 80.0.3987.162 (Official Build) (64-bit)y enFirefox 72.0.2 (64 bit)
Alex Pandrea
6

/test.html#alert('heello ')

test.html
<button onClick="eval(document.location.hash.substring(1))">do it</button>
Budia
fuente
13
Tenga en cuenta que esta evaluación de la entrada del usuario es una práctica muy peligrosa y, por lo general, no debe permitirse.
Domingo
6
Sí, esto es una locura. Hay lugares de trabajo donde te despiden por este tipo de locura.
Jacob
6
Esto conduce a problemas reflejados de secuencias de comandos entre sitios (XSS) como lo señaló @domenukk.
pavanw3b
6

también puede colocar el siguiente

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

a su código html, y cuando haga clic en el hipervínculo 'Haga clic en mí', aparecerá javascript en la barra de URL y se mostrará el cuadro de diálogo de alerta

máximo
fuente
5
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)
Sean Patrick Floyd
Yo tampoco. Sé que puedes escribir JS en la barra de direcciones
DazManCat
Esto es lo que estaba buscando, ¿cómo se llama?
ThorSummoner
4

Acerca de la window.location.hashpropiedad:

devuelve la parte 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"

Ejemplo 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":  

}
Remolino
fuente
3

Usar la respuesta de Eddy funcionó muy bien ya que tuve el mismo problema. Simplemente llame a su URL con los parámetros: "www.mypage.html # myAnchor"

Luego, en mypage.html:

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

puede usar esta situación: por ejemplo, tiene una página: http://www.example.com/page.php luego en ese page.php, inserte este código:

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

luego, cada vez que visite esta URL: http://www.example.com/page.php?doaction=blabla

entonces la alerta se llamará automáticamente.

T.Todua
fuente