通过iframe.contentWindow访问IE中的JS函数

时间:2013-08-30 23:06:16

标签: javascript internet-explorer-8

我会尽力保持这一点。以下代码在IE10中正常工作:

if (!document.getElementById(frames[i][j].toString()).contentWindow.MyFunc()) {
        alert("Failed");
        return false;
    }

然而,在IE8中,它失败,因为MyFunc()上的“对象不支持此属性或方法” 但是,它确实找到了内容窗口。

一些可能有用的信息:
'frames'是iframe对象的2D数组 此代码存在于父代中 MyFunc()在子iframe中定义。

基本上,我的问题归结为:

document.getElementById(frames[i][j].toString()).contentWindow.*whatgoeshere?*

我确实看到了this帖子,但事实并没有多大帮助 这不是iframe未知的情况(例如:this post),因为代码在文档准备好后很长时间才会触发。
虽然错误不同(拒绝访问),但我想知道是否需要做一些比this帖子中发现的更复杂的事情。

1 个答案:

答案 0 :(得分:0)

感谢Chris和Arnar花费了大量时间和精力。原来这完全是我的错。今天当我看着MyFunc()时,我注意到它依赖于jQuery validationEngine:

 function MyFunc()() {
    if (!$('#form1').validationEngine('validate')) { return false; }
    $("#btn").click();
    return true;
  }

然后我注意到validationEngine js库的版本在我的机器上是新的,然后是我的测试服务器上的那个...傻了我,我没有部署我对validationEngine做的更新... doh !

对于在事后阅读此内容的任何人:
检查您可能正在使用的任何库的依赖关系(特别是在子函数中)!