我有一个非常完整的ASP.NET站点,它使用iframes。我正在努力将我们用来显示对话框的旧控件更改为使用jQuery UI对话框。我也在确保IE9中的一切工作正常。
事实是:我在iframe中显示的页面中的脚本在IE9中不起作用。为什么?因为Object、Array和String是未定义的。可能还有其他一些问题,我只看到了这些问题。
没有机会(因为有很多原因)停止在某些对话框上使用iframe。我不想使用meta标签来强制IE8兼容。有谁知道修复IE9中这个丑陋的bug的方法吗?
我在配置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);发布于 2011-04-08 01:20:32
注意:here来自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)");"www.example.com“中的javascript代码将执行一次,出现上述错误,然后执行一次,没有错误。
使用以下代码,代码将只正确执行一次:
var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("form:eq(0)");我希望这能帮助别人避免这种痛苦,
迭戈
发布于 2011-08-02 00:34:02
如果你不是在创建一个新元素,有一种类似的方法可以使用现有的iframe来实现这一点。
$(function () {
var iframeSrc = $("#iframeid").attr("src"); // capture target URI
$("#iframeid").attr("src", "about:blank"); // delay loading until we reposition in the DOM
$("#iframeid").appendTo("#newparent").attr("src", iframeSrc); // reposition, load iframe by setting src
});IE9或jquery框架需要解决这个问题。
发布于 2012-10-12 22:13:04
我遇到了类似的问题,但是iframe被添加到页面而不是从页面中删除。它似乎仍然存在同样的问题。
https://stackoverflow.com/questions/5514973
复制相似问题