使用Javascript转到本地URL

Bea*_*ode 13 javascript url firefox local

同样的问题在这里,但我需要去当地的URL在Firefox

我试过像代码一样

var url = "file:///E:/Test/Test.htm";
window.location.href = url;
Run Code Online (Sandbox Code Playgroud)

但是id不起作用.尝试过去window.location = url;也尝试过url = "file://E:/Test/Test.htm";(双"/"而不是三重"/")仍然无法正常工作.

谢谢

Cer*_*rus 15

当我尝试这个:

window.location.href = "file:///C:/Users/Cerbrus/Documents/SomeFile.js"
Run Code Online (Sandbox Code Playgroud)

(是的,这是一条有效的道路.)

Chrome会抛出此错误:

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

这是因为JavaScript无法访问本地文件(由于它是沙箱),并且您使用JavaScript设置新的URL.
"SandBoxed"意味着技术限制(或不限制)在特定边界之外的访问.对于浏览器,这意味着在页面上运行的代码无法访问系统上的文件(否则,通过查看用户的文件系统,很容易"窃取"数据).

但是,

说,我有2个文件:

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

Test.htm 只包含这个:

<script>
    window.location = "file:///C:/Test/Test1.htm";
</script>
Run Code Online (Sandbox Code Playgroud)

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

  • (旁注:我不完全相信“ [相同来源政策](https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript)”在这里没有作用,因为还将协议更改为`file:`。) (2认同)
  • 真棒的答案!因此,脚本不能从托管网页中运行,但它可以从本地htm文件中运行.但Bookmarklets怎么样?我需要在Bookmarklet中使用我的脚本.没有为我工作,但Bookmarlkets是本地的,这是什么原因?并感谢其他人的回答. (2认同)

Akh*_*ran 5

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

除非您运行本地http服务器:

var url = "http://localhost/MySite/Default.aspx";
window.location.href = url;
Run Code Online (Sandbox Code Playgroud)

它会工作