从URL /地址栏调用Javascript函数


111

是否可以从URL调用javascript函数?我基本上是在无法访问源代码的页面中尝试利用JS方法。

就像是: http://www.example.com/mypage.aspx?javascript:printHelloWorld()

我知道如果您将其javascript:alert("Hello World");放入地址栏中,它将起作用。

我怀疑对此的答案是否定的,只是想知道是否有办法做到这一点。


3
您的URL必须显示什么行为-您想在该网站的上下文中执行Javascript吗?
Pekka 2010年

http:在URI开始告诉浏览器的“我要你做一个HTTP请求”,所以HTTP请求它。我认为没有办法解决。
康斯坦丁

7
如果我将其粘贴javascript:alert("Hi");到Firefox(28.0)地址栏中,然后按Enter键,则不会发生任何事情。也许这已被禁用?...是的,显然它已被禁用,因为可以说服白​​痴将任何内容粘贴到其地址栏中。在这里找到信息:stackoverflow.com/a/18782801/111036
mivk 2014年

1
复制粘贴不起作用,但是如果您键入它,它就起作用了,看起来它没有被禁用,但是在粘贴时被解析了。
巴巴尼·桑卡尔·米什拉

1
注意:它仅在以下情况下才能在Firefox中使用:1.您位于实际(非空)页面上,并且2.在其之前显式放置“ javascript:”。
安德鲁(Andrew)

Answers:


59

没有超链接,没有。除非页面内部专门有脚本并且正在检查某些参数,否则不会……但是对于您的问题,不,浏览器中没有对此的内置支持。

但是,有些书签可以标记为从地址栏中快速运行JavaScript函数的书签。不知道这是否满足您的需求,但是它已经接近了。


5
我基本上试图在我无权访问源代码的页面中利用JS方法。
DazManCat

27

在地址栏中写

javascript:alert("hi");

确保您在一开始就写:javascript:


1
Google Chrome版本80.0.3987.132(正式版本)(64位)上不起作用。Chrome会自动javascript:从地址栏中删除前缀。
造口

2
@stomy javascript:不幸的是,您需要手动输入
wjandrea

24

您可以使用数据URI。例如: data:text/html,<script>alert('hi');</script>

有关更多信息,请访问:https : //developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs


1
我一直以为数据URL仅用于图像,谢谢,这真的很棒:)
Fareed Alnamrouti

2
您不能将此附加到网址。
vivek_23 '19

某些浏览器可能会通过以下消息阻止此操作:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,<script>alert('hi');</script>”)
Aleksandr Ryabov

它可以在Google Chrome版本80.0.3987.132(正式版)(64位)上运行。
造口

它可以在内部Chrome 80.0.3987.162 (Official Build) (64-bit)和内部使用Firefox 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
注意,这种评估用户输入是非常危险的做法,通常不应允许。
domenukk's

6
是的,这太疯狂了。在有些工作场所中,您会因为这种疯狂而被解雇。
雅各布

6
如@domenukk指出的那样,这会导致反映出的跨站点脚本(XSS)问题。
pavanw3b '16

6

您也可以放置以下内容

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

到您的html代码,并且当您单击“单击我”超链接时,javascript将出现在网址栏中,并且“警告”对话框将显示


5
javascript将显示在哪个浏览器的网址栏中?我从未见过。(我知道javascript:链接有效,我只是在谈论网址栏)
肖恩·帕特里克·弗洛伊德

我也没有。我知道您可以在地址栏中输入JS
DazManCat 2010年

这就是我想要的,这叫什么?
ThorSummoner 2014年

3

关于window.location.hash属性:

返回URL的锚点部分。


范例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"

范例2:

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

范例3:

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

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

case "#admin":  

}

3

使用Eddy的答案非常有效,因为我遇到了同样的问题。只需使用以下参数调用您的网址即可:“ www.mypage.html#myAnchor”

然后,在mypage.html中:

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

2

您可以使用这种情况:例如,您有一个页面: http://www.example.com/page.php 然后在该page.php中插入以下代码:

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

然后,每当您访问此网址时: http://www.example.com/page.php?doaction=blabla

警报将被自动调用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.