微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查是否在IE8的打开器窗口中定义了功能

如何解决检查是否在IE8的打开器窗口中定义了功能

|| 我有一个弹出窗口,允许打开器窗口可选地定义一个回调函数,如果定义了该回调函数,则当用户完成弹出窗口时将调用该回调函数。根据我已阅读的建议,我正在这样做:
if (window.opener && (typeof window.opener.callbackFunction == \'function\')) {
  window.opener.callbackFunction()
}
这在Firefox中可以正常工作-定义函数后,typeof就是预期的\“ function \”。但是,在IE8中,typeof改为\“ object \”。该函数通常在打开器中定义,如下所示:
function callbackFunction() {
  ...
}
有人知道为什么IE8中的typeof会有所不同吗?对于如何完成此操作,我也欢迎其他建议。我也尝试了
if (window.opener && window.opener.callbackFunction)
,但是导致在未定义函数时IE8崩溃。     

解决方法

你可以试试
if ( window.opener && (typeof window.opener.callbackFunction != \'undefined\') {
  window.opener.callbackFunction();
}
我目前没有IE,因此无法测试,但相信它会工作。     ,这是一个hack,但这可以工作:
if (typeof window.opener.callbackFunction == \'object\') {
   // this first \'if\' is required because window.opener returns an object even
   // if window.opener has been closed
   if(window.opener.callbackFunction.toString().substr(0,8) == \'function\') {
      window.opener.callbackFunction();
   }
}
注意:对于某些本机浏览器功能,例如alert(),它将失败。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。