JavaScript | 使用window.open打开的新窗口的属性值是怎样的?

新手上路,请多包涵

例如在<script></script>标签中间添加了如下代码

function test()
{
    var newWindow = window.open("https://segmentfault.com", "a", "width = 600,height = 400");
    document.write(newWindow.location.href);
    document.write(newWindow.innerWidth);
}
test();

测试后的输出结果分别为 about:blank 与 0,但按我的理解是"https://segmentfault.com"与600。不知道我的理解哪里出了问题,希望有人来讲解一下。

还有就是想问一下,如果真的是这样的话,那新窗口的URL这些属性应该怎么查询呢?

JS新手,希望得到大家的指导!

阅读 4.2k
2 个回答

clipboard.png

当你使用 window.open 打开一个页面的时候,window.open 返回了一个 Window 对象给了 newWindow
而尝试获取此对象的 location 属性时产生了 object DOMException 异常
具体的解释为:

Blocked a frame with origin "http://aaa.com" from accessing a cross-origin frame.(…)

其中aaa.com 是你源页面的域名
这是因为浏览器禁止不同域的页面相互访问,所以你在aaa.com的页面是没有办法获取到bbb.com的新页面的属性的
但是如果你在aaa.com的一个页面打开了aaa.com下的另一个页面,这时候你可以正常地获取到 location 属性

一点拙见,如有不妥请提出

如果你能拿到值,也就能设置,浏览器的安全性机制不允许跨域。除非你用jsop,代理设置等针对这种问题的解决方案。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题