Bre*_*tin 22 javascript internet-explorer typeof
我有一个窗口,在关闭之前我刷新底层页面.
if(opener && typeof(opener.Refresh) != 'undefined')
{
opener.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
如果我离开原始的开始页面,此代码将抛出"权限被拒绝"错误.
调试代码显示typeof(opener.Refresh)等于"未知"而不是预期的"未定义".
据我所知,"未知"不是其中一个返回值typeof,那么该值的返回方式和原因是什么?
更多的信息
我通过将检查更改为以下来避免错误:
if(opener && typeof(opener.Refresh) == 'function')
Run Code Online (Sandbox Code Playgroud)
但是这样的例子(在javascript中检测未定义的对象属性)似乎并未将"未知"因素纳入等式中.
试试in算子.我有同样的问题(使用applet),我使用in以下方法解决了它:
if("Refresh" in opener) {
opener.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
在ECMAScript规范规定,对于主机对象的返回值typeof运算符是:
实现定义除了可能不是"
undefined","boolean","number"或"string".
我相信这个unknown值只能在Internet Explorer中返回.有趣的是,MSDN没有提到它:
typeof返回有六个可能的值:"number","string","boolean","object","function"和"undefined".
| 归档时间: |
|
| 查看次数: |
10894 次 |
| 最近记录: |