2010-11-12 26 views
70

E 'possibile chiamare una funzione javascript dall'URL?Chiama la funzione Javascript dall'URL/barra degli indirizzi

Qualcosa di simile: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

So che se si mette javascript:alert("Hello World"); nella barra degli indirizzi che funzionerà.

Sospetto che la risposta a questo non sia, ma mi sono chiesto se c'era un modo per farlo.

+2

Quale comportamento sarebbe l'URL avere per visualizzare - fare si desidera eseguire Javascript nel contesto di quel sito? –

+0

Il 'http:' all'inizio dell'URI indica al browser "Voglio che tu faccia una richiesta HTTP", quindi la richiesta HTTP lo fa. Non c'è modo di aggirarlo, penso. – Constantin

+6

Se si incolla 'javascript: alert (" Ciao ");' nella mia barra degli indirizzi di Firefox (28.0) e premere Invio, non succede nulla. Forse questo è stato disabilitato? ... Sì, apparentemente è stato disabilitato perché gli idioti potevano essere convinti a incollare qualsiasi cosa nella loro barra degli indirizzi. Trovato le informazioni qui: http://stackoverflow.com/a/18782801/111036 – mivk

risposta

45

Non c'è da un collegamento ipertestuale, no. A meno che la pagina non contenga uno script specifico per questo e controlli alcuni parametri ... ma per la tua domanda, no, non c'è un supporto integrato nei browser per questo.

Ci sono tuttavia bookmarklets che è possibile aggiungere ai segnalibri per eseguire rapidamente le funzioni JavaScript dalla barra degli indirizzi; non sono sicuro che soddisfi le tue esigenze, ma è il più vicino possibile.

+0

Fondamentalmente sto cercando di utilizzare metodi JS in una pagina in cui non ho accesso alla fonte. – DazManCat

8

/test.html#alert('heello ')

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

Si noti che questa valutazione dell'input dell'utente è una pratica molto pericolosa e in genere non dovrebbe essere consentita. – domenukk

+4

Sì, questo è abbastanza folle. Ci sono luoghi di lavoro in cui verrai licenziato a causa di questo tipo di follia. Se non sai perché autorizzare il tuo sito web a eseguire javascript con un utente arbitrario come se fosse il tuo javascript, allora dovresti cercare un nuovo lavoro o ricevere una formazione. – Jacob

+4

Questo porta a problemi di cross-site scripting (XSS) riflessi, come indicato da @domenukk. – pavanw3b

4

si può anche inserire il followinng

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

al vostro codice html, e quando si fa clic su 'Click me' collegamento ipertestuale, apparirà javascript in URL-bar e di dialogo Avviso mostrerà

+4

* javascript apparirà in url-bar * in quale browser? Non l'ho mai visto. (Lo so javascript: i collegamenti funzionano, sto solo parlando della barra degli URL) –

+0

Nemmeno io. So che è possibile digitare JS nella barra degli indirizzi – DazManCat

+0

Questo è quello che stavo cercando, che cosa è chiamato? – ThorSummoner

2

è possibile utilizzare come questa situazione: ad esempio, si dispone di una pagina: http://www.example.com/page.php.210 allora in quel page.php, inserire questo codice:

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

allora, ogni volta che si visita questo URL: http://www.example.com/page.php?doaction=blabla

poi l'avviso sarà chiamato automaticamente.

13

Scrivi nella barra degli indirizzi

javascript:alert("hi"); 

Assicurarsi di scrivere in principio: javascript:

1

Sulla proprietà window.location.hash:

Ritorna la parte di ancoraggio di un URL.


Esempio 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); 
}) 

Esempio 3:

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

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

case "#admin": 

} 
0

Uso risposta di Eddy lavorato molto bene come ho avuto lo stesso problema. Basta chiamare il vostro URL con i parametri: "www.mypage.html # myAnchor"

Poi, in mypage.html:

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