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.


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.


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:


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


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>

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


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

}

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.