【问题标题】:Go to local URL with Javascript使用 Javascript 访问本地 URL
【发布时间】:2012-12-12 17:07:00
【问题描述】:

here 相同的问题,但我需要转到 Firefox 中的本地 URL

我尝试过类似的代码

var url = "file:///E:/Test/Test.htm";
window.location.href = url;

但 id 不起作用。尝试使用window.location = url; 并尝试使用url = "file://E:/Test/Test.htm";(双“/”而不是三重“/”),但仍然不起作用。

谢谢

【问题讨论】:

    标签: javascript url firefox local


    【解决方案1】:

    我猜它的不允许从javascript加载本地资源

    除非你有一个本地 http 服务器正在运行:

    var url = "http://localhost/MySite/Default.aspx";
    window.location.href = url;
    

    会有用的

    【讨论】:

      【解决方案2】:

      您无法从本地系统访问该文件。由于浏览器工作在沙盒模式,您不能破坏沙盒并访问本地文件系统,因为它会违反安全性。尝试使用 AJAX 请求直接加载,否则由于沙盒限制,您尝试执行的操作是不可能的,也不符合安全策略。

      【讨论】:

      • 如果以 file:///C:/Users/arun.ak/Desktop/somting.html 的形式打开 html,同样的规则适用吗?
      • @ArunKillu:是的。 JavaScript 无法从其他域访问该文件。
      • @Cerbrus 我知道,但是当我们通过双击(作为文件)打开编写 js 的 html 时,重定向工作
      • @ArunKillu:如果是这种情况(从file: 运行的 html),OP 的代码会起作用,他就不会问这个问题了。
      • @Cerbrus 嗯......我后来才明白......我也删除了我的答案。但我无法说服你。
      【解决方案3】:
      window.open(url); // here url can be anything
      

      【讨论】:

        【解决方案4】:

        当我尝试这个时:

        window.location.href = "file:///C:/Users/Cerbrus/Documents/SomeFile.js"
        

        (是的,这是一条有效的路径。)

        Chrome 向我抛出此错误:

        不允许加载本地资源:file:///C:/Users//Documents/File.js

        这是因为 JavaScript 无法访问 本地 文件(因为它被沙盒化了),而您正在使用 JavaScript 设置新的 URL。
        “沙盒”是指某项技术已限制(或禁止)访问超出特定范围。对于浏览器,这意味着页面上运行的代码无法访问您系统上的文件(否则,只需查看用户的文件系统,就很容易“窃取”数据)。

        但是

        说,我有 2 个文件:

        C:/Test/Test.htm
        C:/Test/Test1.htm

        Test.htm 只包含这个:

        <script>
            window.location = "file:///C:/Test/Test1.htm";
        </script>
        

        这实际上将重定向到Test1.htm,因为目标文件与源文件所在的域位于同一域中。

        【讨论】:

        • (旁注:我不完全相信“Same Origin Policy”在这里没有发挥作用,因为我们还将协议更改为file:。)
        • 很棒的答案!因此,该脚本不适用于托管网页,但它适用于本地 htm 文件。但是书签呢?我需要一个书签中的脚本。对我不起作用,但 Bookmarlkets 是本地的,这是什么原因?也感谢其他回答的人。
        • 这似乎也不起作用,@BearBear:javascript:(function(){window.location="file:///C:/Test/Test1.htm";}()); Test.htm 示例有效,因为源文件已经是本地文件,所以file:/&lt;etc&gt; 包含在沙箱中。
        • 我不清楚如何将顶级浏览上下文导航到file: URL 可以为导航脚本提供任何信息,因为导航脚本显然会被终止。我认为这可能成为问题的唯一情况是 iframe 中的 file: 资源,它可能会根据加载时间泄漏某种 onload 信息,例如文件的存在或大小。我想不出顶级浏览上下文的导航可能导致信息泄漏到导航脚本的任何情况,但我可以在 iframe 中看到它。
        【解决方案5】:

        window.location.href = window.location.pathname + (你的本地文件名或路径)

        【讨论】:

          猜你喜欢
          • 2010-09-27
          • 1970-01-01
          • 2018-02-12
          • 2011-04-11
          • 2020-01-19
          • 2019-10-13
          • 1970-01-01
          相关资源
          最近更新 更多