我正在尝试检查弹出窗口(opened_window = window.open()
)是否已在弹出窗口中加载文档/ javascript之前已关闭,因为如果未加载javascript,则无法处理{子窗口中的{1}}事件与父窗口进行通信,并让它知道弹出窗口已关闭。
当我在加载文档之前关闭弹出窗口并从父窗口执行onunload
时,它会显示console.log(opened_window)
是一个对象,并包含设置为opened_window
的属性closed
和true
opener
。
所以,我这样做了:
null
问题是我收到错误if (opened_window !== null && typeof opened_window === 'object')
{
if (opened_window.hasOwnProperty('closed') &&
opened_window.closed === true &&
opened_window.hasOwnProperty('opener') &&
opened_window.opener === null)
{
opened_window = null;
// do stuff
}
}
。这对我来说非常困惑,因为它已经通过Uncaught TypeError: undocked_window.hasOwnProperty is not a function
测试,这意味着typeof opened_window === 'object'
是一个对象,那么为什么opened_window
会导致错误?我的理解是.hasOwnProperty
将适用于任何对象。
答案 0 :(得分:4)
这很奇怪,但并非所有对象都继承自Object.prototype
。
例如:
Object.create(null).hasOwnProperty('foo'); // error
但你可以借用这个方法:
Object.prototype.hasOwnProperty.call(Object.create(null), 'foo'); // false