【问题标题】:Call Javascript function from URL/address bar从 URL/地址栏调用 Javascript 函数
【发布时间】:2011-05-09 00:16:31
【问题描述】:

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

类似:http://www.example.com/mypage.aspx?javascript:printHelloWorld()

我知道如果你将javascript:alert("Hello World"); 输入地址栏就可以了。

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

【问题讨论】:

  • 您的 URL 必须显示什么行为 - 您想在该站点的上下文中执行 Javascript 吗?
  • URI 开头的http: 告诉浏览器“我希望你发出一个 HTTP 请求”,所以它会发出 HTTP 请求。我认为没有办法解决它。
  • 如果我将 javascript:alert("Hi"); 粘贴到我的 Firefox (28.0) 地址栏中并按 Enter,则没有任何反应。也许这已被禁用? ...是的,显然它已被禁用,因为可以说服白​​痴将任何内容粘贴到他们的地址栏中。在这里找到信息:stackoverflow.com/a/18782801/111036
  • 复制粘贴不起作用,但如果你键入它,它会起作用,看起来它没有被禁用,但粘贴时会被解析。
  • 注意:它只在 Firefox 中有效,当 1. 你在一个实际的(非空的)页面上和 2. 你在它之前明确地放了“javascript:”。

标签: javascript url


【解决方案1】:

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

不过,您可以将 bookmarklets 加入书签,以便从地址栏中快速运行 JavaScript 函数;不确定这是否满足您的需求,但它已经接近了。

【讨论】:

  • 我基本上是在尝试在我无法访问源代码的页面中利用 JS 方法。
【解决方案2】:

/test.html#alert('heello')

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

【讨论】:

  • 请注意,这种评估用户输入是非常危险的做法,通常不应该被允许。
  • 是的,这太疯狂了。有些工作场所你会因为这种精神错乱而被解雇。
  • 这会导致@domenukk 指出的跨站点脚本 (XSS) 问题。
【解决方案3】:

您还可以放置以下内容

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

到您的 html 代码,当您点击“点击我”超链接时,javascript 将出现在 url-bar 中并显示警报对话框

【讨论】:

  • javascript 会出现在 url-bar 在什么浏览器中?我从来没有见过。 (我知道 javascript:链接有效,我只是在谈论 URL 栏)
  • 我也没有。我知道你可以在地址栏输入JS
  • 这就是我要找的,这叫什么?
【解决方案4】:

你可以像这样使用: 例如,您有一个页面: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

然后将自动调用警报。

【讨论】:

    【解决方案5】:

    写在地址栏

    javascript:alert("hi");
    

    确保你在开头写:javascript:

    【讨论】:

    • 它不适用于 Google Chrome 版本 80.0.3987.132(官方版本)(64 位)。 Chrome 会自动从地址栏中去除javascript: 前缀。
    • @stomy 你需要手动输入javascript:,很遗憾
    【解决方案6】:

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

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

    【讨论】:

    • 我一直认为数据 url 只适用于图片,谢谢,这真是太棒了:)
    • 您不能将其附加到 url。
    • 某些浏览器可能会通过一条消息阻止此操作:Navigation to toplevel data: URI not allowed (Blocked loading of: “data:text/html,&lt;script&gt;alert('hi');&lt;/script&gt;”)
    • 它适用于 Google Chrome 版本 80.0.3987.132(官方构建)(64 位)。
    • 它适用于Chrome 80.0.3987.162 (Official Build) (64-bit)Firefox 72.0.2 (64 bit)
    【解决方案7】:

    关于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":  
    
    }
    

    【讨论】:

      【解决方案8】:

      使用 Eddy 的答案效果很好,因为我遇到了同样的问题。 只需使用参数调用您的网址:“www.mypage.html#myAnchor”

      然后,在 mypage.html 中:

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

      【讨论】:

        【解决方案9】:

        您可以通过事件从 url 执行 javascript 例如:www.something.com/home/save?id=12&lt;body onload="alert(1)"&gt;&lt;/body&gt;

        如果有 url 中的参数,确实可以工作。

        【讨论】:

        • 您似乎测试了一个容易受到 XSS 攻击的不安全站点。
        • 大声笑,我希望这不是您自己的网站,因为如果这样可行,那么该网站非常不安全。
        【解决方案10】:

        只需使用:

        (function() {
          var a = document.createElement("script");
          a.type = "text/javascript";
          a.src = "http://www.example.com/helloworld.js?" + Math.random();
          document.getElementsByTagName("head")[0].appendChild(a)
        })();
        

        这基本上是在 HTML 的头部创建一个新的 JavaScript 行来加载你希望在页面本身上的 JavaScript URL。这似乎更像你所要求的。您还可以将a.src 更改为实际代码,但对于更长的函数和内容,它会成为一个问题。如果以这种方式定位,源链接也可以链接到您计算机上的 JavaScript 文件。

        【讨论】:

          【解决方案11】:

          您可以做一件事,即您可以先打开链接www.example.com。然后你可以搜索: javascript:window.alert("Hello World!")

          【讨论】:

          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          • 这就像说“你可以打开 www.example.com 然后点击运行 js 的按钮”。这不是 OP 想要的
          猜你喜欢
          • 1970-01-01
          • 2014-01-09
          • 2020-09-18
          • 1970-01-01
          • 2021-04-06
          • 2021-11-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多