我在使用iframe的ASP.NET中拥有一个非常完整的网站。我正在努力更改以前用于显示对话框的旧控件,以使用jQuery UI对话框。我还要确保在IE9中一切正常。
事实是:我在iframe中显示的页面中的脚本无法在IE9中使用。为什么?因为 undefined object ,数组和字符串。可能还有其他一些问题,我只看到了这些问题。
由于某些原因,没有机会停止在某些对话框上使用iframe。而且我宁愿不要使用meta标签来强制IE8兼容性。有谁知道修复IE9中这个丑陋错误的方法吗?
我为配置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);
最佳答案
注意:here有一些来自IE9的文档可能会帮助您理解。感谢@Ben Amada分享。
经过将近一个星期疯狂的一天,我发现了它。
IE9的问题不是iframe中的javascript代码专用。甚至没有由javascript或任何库添加的iframe中的javascript(我有很多js库和插件可能会破坏IE9)。
问题是当您通过DOM移动iframe或一个祖先时。 IE9会根据您执行的 Action 执行iframe中加载的页面中的代码。每次(但最后一次)都将有Object,String,Array和其他 undefined object (以及其他错误)。
例子:
var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("body");
$("#myIframe").appendTo("form:eq(0)");
发生上述错误,“www.example.com”中的javascript代码将执行一次,然后再执行一次而不会出现错误。
使用以下代码,该代码将被一次性正确地执行:
var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("form:eq(0)");
我希望这可以帮助某人避免这种痛苦,
地亚哥