Javascript 在iframe中包含jQuery时,Internet Explorer 9(不是早期版本或其他浏览器)中出现错误

Javascript 在iframe中包含jQuery时,Internet Explorer 9(不是早期版本或其他浏览器)中出现错误,javascript,jquery,internet-explorer,internet-explorer-9,Javascript,Jquery,Internet Explorer,Internet Explorer 9,基本上我有一个启动fancybox iframe的页面。在这个iframe中,我还包括jQuery。但是当我在InternetExplorer9中测试它时,它给出了一个错误 第68行\n错误:“对象”未定义` 此错误位于文件jquery-1.4.1.js中,该行是该文件的第二行: // Save a reference to some core methods toString = Object.prototype.toString, hasOwnProperty = Object.protot

基本上我有一个启动fancybox iframe的页面。在这个iframe中,我还包括jQuery。但是当我在InternetExplorer9中测试它时,它给出了一个错误

第68行\n错误:“对象”未定义`

此错误位于文件
jquery-1.4.1.js
中,该行是该文件的第二行:

// Save a reference to some core methods
toString = Object.prototype.toString,
hasOwnProperty = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
indexOf = Array.prototype.indexOf;
这是
var jQuery=函数(选择器,上下文){
的最后几行

如果我在compatibility视图中,没有问题,在任何其他浏览器中都没有问题,只有InternetExplorer9模式下的InternetExplorer9和InternetExplorer9标准。如果我忽略错误,使用任何版本的jQuery都没有问题


发生了什么事,我能做些什么来修复?

当我从iframe中删除SRC属性并将onOpen事件添加到jQuery的对话框中时,问题得到了解决:

open: function()
  {
    document.getElementById("mainFrame").src = "/login.aspx";
  }

哦,我以为我有最新的花式盒子。结果我有1.3.1,1.3.4修复了这个问题

UPD(sompylasar):事实上,这在1.3.2中已修复(请参阅)。我将与进行了比较,发现以下差异解决了问题:

content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
其中,
isIE6
的计算结果为:

isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
isIE6=$.browser.msie&&$.browser.version<7&&!window.XMLHttpRequest,

在从DOM中删除
iframe
之前,应该先执行此代码段。

我有完全相同的问题,但我的原因不同。我想我会在这里分享,以防其他人和我在同一条船上-特别是考虑到我花了大约4个小时才找到

我们的主页有一个iframe,它的src属性在很短的时间内被更改了两次(我们实际上是两次意外地加载相同的src,一次直接在HTML中加载,然后通过JavaScript再次加载页面)。我不确定InternetExplorer9为什么会阻塞,但我猜框架部分是通过在再次设置src时初始化其脚本,使JavaScript引擎处于不愉快的状态。不管怎样,我很高兴我找到了它,因为我们不应该加载两次框架

然而,InternetExplorer9如此糟糕地死去的真正原因是一个谜。

这是一个相关的问题:

在Internet Explorer中似乎存在一些真正的问题,在某些情况下,当脚本在iframe的早期(在head部分)加载时,“Function”和“Object”等本机全局对象未定义

我在另一个问题上悬赏以引起更多的注意


根据经验,我知道这个问题在IE8中也存在,但在IE9中似乎更为罕见。看起来在IE9中情况变得更糟了…

将jQuery更新到最新版本将jQuery更新到1.6.1,现在错误出现在第81行,相同的
toString=Object.prototype.toString
代码。但是,当您打开iframe的内容时会发生这种情况吗直接?也就是说,如果你自己打开iframe页面?@jimbojw:不,先生,iframe中的代码如果加载到它自己的窗口中,则不会出错。我想知道iframe是在设置src属性之前还是之后创建的。如果创建了iframe,并且/然后/设置了src属性,这可能是个问题。(与构建包含HTML的HTML字符串并将其整体注入具有innerHTML的元素相反).Fancybox会动态创建iframe。我不知道如何将其应用到该过程中。您可以使用Fanybox的这种方法,使用
onComplete
事件。sompylasar在那里进行了出色的侦探工作。事实上,您不应该更新我的答案,而应该将其作为新答案提交,以便获得升级分数这是你应得的。