Rufen Sie die Javascript-Funktion über die URL / Adressleiste auf

111

Ist es möglich, eine Javascript-Funktion über die URL aufzurufen? Ich versuche im Grunde, JS-Methoden auf einer Seite zu nutzen, auf die ich keinen Zugriff auf die Quelle habe.

Etwas wie: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

Ich weiß, wenn Sie javascript:alert("Hello World");in die Adressleiste setzen, wird es funktionieren.

Ich vermute, die Antwort darauf ist nein, aber ich habe mich nur gefragt, ob es einen Weg gibt, dies zu tun.

DazManCat
quelle
3
Welches Verhalten müsste Ihre URL anzeigen - möchten Sie Javascript im Kontext dieser Site ausführen?
Pekka
Das http:am Anfang des URI sagt dem Browser "Ich möchte, dass Sie eine HTTP-Anfrage stellen", also HTTP-Anfrage. Daran führt kein Weg vorbei, denke ich.
Constantin
7
Wenn ich javascript:alert("Hi");in meine Firefox (28.0) -Adressleiste einfüge und die Eingabetaste drücke, passiert nichts. Vielleicht wurde dies deaktiviert? ... Ja, anscheinend wurde es deaktiviert, weil Idioten davon überzeugt werden konnten, etwas in ihre Adressleiste einzufügen. Die Infos finden Sie hier: stackoverflow.com/a/18782801/111036
mivk
1
Kopieren Einfügen funktioniert nicht, aber wenn Sie es eingeben, funktioniert es, sieht aus, als wäre es nicht deaktiviert, sondern wird beim Einfügen analysiert.
Bhabani Sankar Mishra
1
Hinweis: Es funktioniert nur in Firefox, wenn 1. Sie sich auf einer tatsächlichen (nicht leeren) Seite befinden und 2. Sie explizit "Javascript:" davor setzen.
Andrew

Antworten:

59

Es gibt keinen Hyperlink, nein. Nicht, wenn die Seite kein spezielles Skript enthält und nach Parametern sucht ... aber für Ihre Frage, nein, es gibt keine integrierte Unterstützung in Browsern dafür.

Es gibt jedoch Lesezeichen, die Sie mit einem Lesezeichen versehen können, um JavaScript-Funktionen schnell über Ihre Adressleiste auszuführen. Ich bin mir nicht sicher, ob das Ihren Anforderungen entspricht, aber es ist so nah wie es nur geht.

Nick Craver
quelle
5
Ich versuche im Grunde, JS-Methoden auf einer Seite zu nutzen, auf die ich keinen Zugriff auf die Quelle habe.
DazManCat
27

Schreiben Sie in die Adressleiste

javascript:alert("hi");

Stellen Sie sicher, dass Sie am Anfang schreiben: Javascript:

hfarazm
quelle
1
Es funktioniert nicht mit Google Chrome Version 80.0.3987.132 (Official Build) (64-Bit). Chrome entfernt das javascript:Präfix automatisch aus der Adressleiste.
Stomy
2
@stomy Sie müssen javascript:leider manuell
eingeben
24

Sie können Daten-URIs verwenden. Beispielsweise: data:text/html,<script>alert('hi');</script>

Weitere Informationen finden Sie unter: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

yassine45
quelle
1
Ich dachte immer, Daten URL ist nur für Bilder, danke das ist wirklich erstaunlich :)
Fareed Alnamrouti
2
Sie können dies nicht an eine URL anhängen.
vivek_23
Einige Browser blockieren dies möglicherweise mit einer Meldung:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
Aleksandr Ryabov
Es funktioniert mit Google Chrome Version 80.0.3987.132 (Official Build) (64-Bit).
Stomy
es funktioniert in Chrome 80.0.3987.162 (Official Build) (64-bit)und inFirefox 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
quelle
13
Beachten Sie, dass diese Auswertung von Benutzereingaben eine sehr gefährliche Praxis ist und normalerweise nicht zulässig sein sollte.
Domenukk
6
Ja, das ist ziemlich verrückt. Es gibt Arbeitsplätze, an denen Sie wegen dieser Art von Wahnsinn entlassen werden.
Jacob
6
Dies führt zu reflektierten Problemen mit Cross-Site-Scripting (XSS), auf die @domenukk hingewiesen hat.
pavanw3b
6

Sie können auch das Folgende platzieren

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

Wenn Sie auf den Hyperlink "Click me" klicken, wird Javascript in der URL-Leiste angezeigt und das Dialogfeld "Alert" wird angezeigt

heximal
quelle
5
In welchem ​​Browser wird Javascript in der URL-Leiste angezeigt? Das habe ich noch nie gesehen. (Ich kenne Javascript: Links funktionieren, ich spreche nur über die URL-Leiste)
Sean Patrick Floyd
Ich auch nicht. Ich weiß, dass Sie JS in die Adressleiste
eingeben können
Das habe ich gesucht, wie heißt das?
ThorSummoner
3

Informationen zur window.location.hashEigenschaft:

Geben Sie den Ankerteil einer URL zurück.


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

Beispiel 2:

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

Beispiel 3:

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

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

case "#admin":  

}
Eddy
quelle
3

Die Verwendung von Eddys Antwort funktionierte sehr gut, da ich das gleiche Problem hatte. Rufen Sie einfach Ihre URL mit den Parametern auf: "www.mypage.html # myAnchor"

Dann in mypage.html:

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

Sie können wie http://www.example.com/page.php folgt vorgehen : Zum Beispiel haben Sie eine Seite: Fügen Sie dann in diese page.php diesen Code ein:

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

dann, wann immer Sie diese URL besuchen: http://www.example.com/page.php?doaction=blabla

dann wird die Warnung automatisch aufgerufen.

T.Todua
quelle