javascript - 在 IE8 的 opener 窗口中检查是否定义了一个函数

标签 javascript internet-explorer-8

我有一个弹出窗口,它允许打开器窗口选择性地定义一个回调函数,如果定义了回调函数,将在用户完成弹出窗口时调用。根据我读过的建议,我正在这样做:

if (window.opener && (typeof window.opener.callbackFunction == 'function')) {
  window.opener.callbackFunction()
}

这在 Firefox 中运行良好 - 定义函数时,typeof 是预期的“函数”。但是,在 IE8 中,typeof 改为“object”。该函数通常在 opener 中定义,如下所示:

function callbackFunction() {
  ...
}

有人知道为什么 typeof 在 IE8 中会有所不同吗?我也乐于接受有关如何实现此目标的其他建议。我还尝试了 if (window.opener && window.opener.callbackFunction) 但这导致 IE8 在未定义函数时崩溃。

最佳答案

你可以试试

if ( window.opener && (typeof window.opener.callbackFunction != 'undefined') {
  window.opener.callbackFunction();
}

我目前没有 IE,所以我无法测试它,但相信它会工作。

关于javascript - 在 IE8 的 opener 窗口中检查是否定义了一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651615/

相关文章:

javascript - jquery ajax() 跨域远程服务器在 IE8 中不工作

javascript - 将 URL 参数从一个页面传递到另一个页面

php - 当用户向下滚动时加载元素

html - 表头在 IE8 中没有得到修复

javascript - 准备使网站与 Internet Explorer 8 兼容

javascript - 为什么 "doScroll"在 IE8 中不起作用?

internet-explorer-8 - IE8 setInterval 和 setTimeout 在正常运行 49 天后立即触发

javascript - 如何将多个 onError 函数分配给一个 Promise(由 Angular 的 $http.post 返回)

javascript - 悬停时更改div颜色

javascript - "1"+"1"和 "1"- - "1"在 javascript 中的两个不同结果