IE9中的iframe中的Javascript代码无法正常工作

Die*_*ego 25 javascript asp.net iframe internet-explorer internet-explorer-9

我在ASP.NET中使用iframe的网站非常完整.我正在努力改变我们用来显示对话框以使用jQuery UI对话框的旧控件.我也确保在IE9中一切正常.

事实是:我在iframe中显示的页面中的脚本在IE9中不起作用.为什么?因为Object,Array和String是未定义的.可能还有其他一些问题,我只看过这些问题.

没有机会(因为很多原因)在某些对话框上停止使用iframe.而且我宁愿不使用meta标签强制IE8 Compability.有谁知道在IE9中修复这个uggly错误的方法吗?

谢谢,迭戈

编辑

这里有一些信息可能是helfull:

我用来配置jQuery UI对话框的插件中iframe的jQuery代码:

options.content = $("<iframe>")
    .attr("src", options.intSrcIframe)
    .attr("frameborder", 0)
    .attr("scrolling", options.intIframeScrolling)
    .css("background-color", options.intBgColorIframe)
    .attr("height", "100%")
    .attr("width", "100%");

_this.html(options.content);
Run Code Online (Sandbox Code Playgroud)

Die*_*ego 27

注意:这里有一些IE9的文档可能有助于理解.感谢@Ben Amada分享它.


经过近一周的疯狂日复一日,我发现了它.

IE9的问题与iframe中的javascript代码无关.甚至没有使用javascript或任何库添加的iframe中的javascript(我有很多js库和插件可能会搞砸IE9).

问题是当您通过DOM移动iframe或一个祖先时.IE9将在iframe中加载的页面中执行多次动作.每次(但最后一个)都会有Object,String,Array等未定义的(以及其他bug).

例:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("body");
$("#myIframe").appendTo("form:eq(0)");
Run Code Online (Sandbox Code Playgroud)

"www.example.com"中的javascript代码将执行一次上述错误,然后执行一次,没有错误.

使用以下代码,代码将只执行一次并且正确:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("form:eq(0)");
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人避免这种痛苦,

迭戈

  • @Elian Ebbing:不客气.很高兴有帮助! (2认同)