我该如何检查我是否可以访问window.opener
How can I check If I have access to window.opener?
如何检查我是否有权访问window.opener?
如果我在一个新窗口中从一个与我的页面(access denied
)未连接的文件打开我的页面,我会收到一个错误。
代码:
if (window.opener) {
if (window.opener.document.getElementById('myHidden') !== "undefined") {
if (window.opener.document.getElementById('myHidden').value == "1" && $("#inputXYZ").val() != "1") {
在2行中,出现错误。但前提是我从一个随机页面打开页面(当然,这个页面没有一个名为"myHidden"的输入字段)。如果我从一个包含这样一个元素的"有效"页面打开该页面,它就可以工作了。
您将元素实例与字符串"undefined"
进行比较,而不是检查是否存在window.opener.document
(我不知道是否必须这样做,但添加起来很容易)。你的意思可能是:
// Note: Still not right, see below
if (typeof window.opener.document.getElementById('myHidden') !== "undefined")
只是这仍然不正确,因为当没有匹配元素时,getElementById
返回null
(而不是undefined
)。
以下是我的做法:
var input = window.opener &&
window.opener.document &&
window.opener.document.getElementById('myHidden');
var value = input && input.value;
if (value != "1") {
// Do something
}
它使用了异常强大的&&
运算符(与异常强大的||
运算符的近亲)。如果window.opener
或window.opener.document
为"假"(null
或undefined
或0
或""
或NaN
,当然还有false
——最后四个不适用),则第一个赋值将短路,导致input
为undefined
。如果input
为假,则第二个赋值将短路,导致value
为undefined
。undefined
!="1"
,所以…
检查您是否有权访问window.opener.document:
if (window.opener && window.opener.document) {
if (window.opener.document.getElementById('myHidden') !== "undefined") {
if (window.opener.document.getElementById('myHidden').value == "1" && $("#inputXYZ").val() != "1") {
}
}
}
如果你真的想确定,添加一个window.opener.document.getElementById
的检查例如
if (window.opener && window.opener.document && window.opener.document.getElementById) {
if (window.opener.document.getElementById('myHidden') !== "undefined") {
if (window.opener.document.getElementById('myHidden').value == "1" && $("#inputXYZ").val() != "1") {
}
}
}
相关文章:
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何访问fastOpt.js
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- 难以访问的JS环境中的语法错误
- 如何从对象的原型方法访问JavaScript对象属性
- 访问json数组中的对象
- 通过javascript/html访问twitter共享iframe
- Dojo:访问dijit.form.Select中单击的项目
- 为什么在这个网站上不能通过JS访问元素
- 从ng模板访问作用域
- 为什么我的firefox扩展javascript不能访问opener窗口,也看不到window.name
- 我该如何检查我是否可以访问window.opener
- 窗口.opener为空,父窗口无法访问自己的弹出窗口,或JavaScript运行时错误0x800706b5 (faceb