Chiama la funzione Javascript dall'URL / barra degli indirizzi


112

È possibile chiamare una funzione javascript dall'URL? Fondamentalmente sto cercando di sfruttare i metodi JS in una pagina a cui non ho accesso alla fonte.

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

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

Sospetto che la risposta a questa domanda sia no ma, mi chiedevo solo se ci fosse un modo per farlo.


3
Quale comportamento dovrebbe mostrare il tuo URL: vuoi eseguire Javascript nel contesto di quel sito?
Pekka

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

7
Se incollo javascript:alert("Hi");nella barra degli indirizzi di Firefox (28.0) e premo Invio, non succede nulla. Forse questo è stato disabilitato? ... Sì, a quanto pare è stato disabilitato perché gli idioti potrebbero essere convinti a incollare qualsiasi cosa nella barra degli indirizzi. Trovato le info qui: stackoverflow.com/a/18782801/111036
mivk

1
copia incolla non funziona, ma se lo digiti, funziona, sembra che non sia disabilitato, ma analizzato quando incollato.
Bhabani Sankar Mishra

1
Nota: funziona solo in Firefox quando 1. sei su una pagina effettiva (non vuota) e 2. metti esplicitamente "javascript:" prima di essa.
Andrew

Risposte:


59

Non c'è da un collegamento ipertestuale, no. No, a meno che la pagina non abbia uno script all'interno specifico per questo e stia controllando alcuni parametri ... ma per la tua domanda, no, non c'è supporto integrato nei browser per questo.

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


5
Sto fondamentalmente cercando di sfruttare i metodi JS in una pagina che non ho accesso alla fonte.
DazManCat

27

Scrivi nella barra degli indirizzi

javascript:alert("hi");

Assicurati di scrivere all'inizio: javascript:


1
Non funziona su Google Chrome versione 80.0.3987.132 (versione ufficiale) (64 bit). Chrome rimuove automaticamente il javascript:prefisso dalla barra degli indirizzi.
stomy

2
@stomy Devi digitare javascript:manualmente, sfortunatamente
wjandrea

24

Puoi utilizzare gli URI dei dati. Per esempio: data:text/html,<script>alert('hi');</script>

Per ulteriori informazioni, visitare: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs


1
Ho sempre pensato che l'URL dei dati fosse solo per le immagini, grazie è davvero fantastico :)
Fareed Alnamrouti

2
non puoi aggiungerlo a un URL.
nice_dev

Alcuni browser potrebbero bloccarlo con un messaggio:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
Aleksandr Ryabov

Funziona su Google Chrome versione 80.0.3987.132 (build ufficiale) (64 bit).
stomy

funziona dentro Chrome 80.0.3987.162 (Official Build) (64-bit)e dentroFirefox 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>

13
Si noti che questa valutazione dell'input dell'utente è una pratica molto pericolosa e di solito non dovrebbe essere consentita.
domenukk

6
Sì, questo è abbastanza folle. Ci sono posti di lavoro in cui verresti licenziato a causa di questo tipo di follia.
Jacob il

6
Ciò porta a problemi di cross-site scripting riflessi (XSS) come sottolineato da @domenukk.
pavanw3b

6

puoi anche inserire il seguente file

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

al tuo codice html e quando fai clic sul collegamento ipertestuale "Cliccami", javascript apparirà nella barra degli indirizzi e verrà visualizzata la finestra di dialogo di avviso


5
javascript apparirà nella barra degli indirizzi in quale browser? Non l'ho mai visto. (So ​​che javascript: i collegamenti funzionano, sto solo parlando della barra degli URL)
Sean Patrick Floyd

Nemmeno io. So che puoi digitare JS nella barra degli indirizzi
DazManCat

Questo è quello che stavo cercando, come si chiama?
ThorSummoner

4

Informazioni sulla window.location.hashproprietà:

restituisce 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"

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

}

3

Usare la risposta di Eddy ha funzionato molto bene perché ho avuto lo stesso problema. Basta chiamare il tuo URL con i parametri: "www.mypage.html # myAnchor"

Quindi, in mypage.html:

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

2

puoi usare in questo modo: ad esempio, hai una pagina: http://www.example.com/page.php quindi in quel page.php, inserisci questo codice:

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

quindi, ogni volta che visiti questo URL: http://www.example.com/page.php?doaction=blabla

quindi l'avviso verrà chiamato automaticamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.