Chrome javascript错误无法读取属性'开启器'为null
Chrome javascript error cannot read property 'opener' of null
我有一点javascript,我用它来确定"开启器"窗口在哪里(通常是为了确定用户正在使用哪个监视器,并在他们正在使用的监视器上打开弹出窗口。
if (typeof (window.opener) != "undefined")
{
var x_win = window.self;
while (x_win != "undefined")
{
x_win = x_win.opener;
if (typeof (x_win.opener) == "undefined") //chrome falls over here
{
winX = (document.all) ? x_win.screenLeft : x_win.screenX;
break;
}
}
}
上面的内容在IE中运行得很好,但Chrome在代码中用"Chrome falls over here"标记的那一行掉了下来。它报告:未捕获类型错误:无法读取null的属性"opener"。
我正在测试"未定义"——我需要做什么才能在Chrome中工作?
您缺少一个typeof
:
while (typeof x_win != "undefined")
// ----^
不过,另外,我会对x_win
进行真实性检查,而不是对typeof
进行检查,因为如果不设置,我希望opener
是null
而不是undefined
:
while (x_win)
请注意,如果目标是找到链中没有opener
的最后一个窗口,则可以将其缩短:
var x_win = window;
while (x_win.opener) {
x_win = x_win.opener;
}
winX = document.all ? x_win.screenLeft : x_win.screenX;
这里有一个细微的区别,即使当前窗口没有opener
,我们也会得到winX
,而在您的代码中,在这种情况下,您不会分配给它,但我认为这很有用。如果没有,只需将if (window.opener)
放在顶部即可。
相关文章:
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 来自文本输入null的html javascript变量
- html+javascript:如何在某些条件下禁用dropdownlist中的null选项
- 当null应该在javascript中使用而不是未定义时
- Javascript Float32数组抛出无法读取属性'0'即使数组定义良好,也为null
- 全局Javascript变量变为null
- 验证对象是否为null Javascript/Angularjs
- 如何在JavaScript中检查变量是否为null和/或未定义
- 无法设置属性'innerHTML'在javascript中为null
- Javascript将变量作为null传递
- 加载的XML文档为null(Javascript)
- ASP.net Javascript函数中的隐藏字段为null
- javascript,HTML表单:单击按钮插入NULL
- Variable is null - javascript
- 如何使用文档检测全屏.msFullscreenElement !== null (javascript)
- appendChild null | javascript/html
- 无法读取property 'length'null (javascript)
- ajax xmlhttp response is null - javascript
- 无法读取属性'addEventListener'为null(JavaScript帆船应用程序)
- 无法读取属性'null"javascript错误