1

我会尽力保持这个简单。以下代码在 IE10 中运行良好:

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

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

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

从本质上讲,我的问题归结为:

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

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

4

1 回答 1

0

感谢 Chris 和 Arnar 在这方面花费的时间和精力。原来这完全是我的错。今天,当我查看 MyFunc() 时,我注意到它依赖于 jQuery 验证引擎:

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

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

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

于 2013-09-02T14:51:42.300 回答