IE9中iframes中的JavaScript代码不起作用
我在ASP.NET中有一个非常完整的网站,它使用iFrame。我正在将一个用于显示对话框的旧控件更改为使用jQueryUI对话框。我也在确保IE9中的所有功能都正常工作 事实是:iframes中显示的页面中的脚本在IE9中不起作用。为什么?因为对象、数组和字符串未定义。可能还有其他一些问题,我只看到了这些 没有机会(因为很多原因)停止在某些对话框上使用iframe。我宁愿不要使用meta标签来强制IE8兼容。有人知道如何修复IE9中这个丑陋的错误吗 我为配置jQuery UI对话框制作的插件中iframe的jQuery代码:IE9中iframes中的JavaScript代码不起作用,javascript,asp.net,internet-explorer,iframe,internet-explorer-9,Javascript,Asp.net,Internet Explorer,Iframe,Internet Explorer 9,我在ASP.NET中有一个非常完整的网站,它使用iFrame。我正在将一个用于显示对话框的旧控件更改为使用jQueryUI对话框。我也在确保IE9中的所有功能都正常工作 事实是:iframes中显示的页面中的脚本在IE9中不起作用。为什么?因为对象、数组和字符串未定义。可能还有其他一些问题,我只看到了这些 没有机会(因为很多原因)停止在某些对话框上使用iframe。我宁愿不要使用meta标签来强制IE8兼容。有人知道如何修复IE9中这个丑陋的错误吗 我为配置jQuery UI对话框制作的插件中i
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);
options.content=$(“”)
.attr(“src”,options.intSrcIframe)
.attr(“帧边框”,0)
.attr(“滚动”,选项.intIframeScrolling)
.css(“背景色”,选项.intBgColorIframe)
.attr(“高度”、“100%”)
.attr(“宽度”、“100%”);
_html(options.content);
注意:IE9中的一些文档可能有助于理解。感谢@Ben Amada分享
经过将近一周的日复一日的疯狂之后,我发现了这一点 IE9的问题并不特别在于iframes中的javascript代码。即使是javascript或任何库添加的iFrame中的javascript(我有很多js库和插件可能会破坏IE9) 问题是在DOM中移动iframe或一个祖先时。IE9将在iframe中加载页面中的代码,执行次数与您的移动次数相同。每次(但最后一次)都会有对象、字符串、数组和其他未定义的错误(以及其他错误) 例如:
var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("body");
$("#myIframe").appendTo("form:eq(0)");
var-iframe=$(“”).attr(“src”,“www.example.com”).attr(“id”,“myIframe”);
iframe.附件(“正文”);
$(“#myIframe”)。附录(“表格:eq(0)”;
“www.example.com”中的javascript代码将执行一次,出现上述错误,然后执行一次,没有错误
使用以下代码,代码将被正确地执行一次:
var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("form:eq(0)");
var-iframe=$(“”).attr(“src”,“www.example.com”).attr(“id”,“myIframe”);
iframe.appendTo(“形式:等式(0)”);
我希望这能帮助别人避免屁股痛
Diego如果不创建新元素,可以使用现有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框架需要修复此问题。我遇到了类似的问题,但是iframe被添加到页面中,而不是从页面中删除。它似乎仍然存在相同的问题。您如何知道它们未定义?能否提供一些示例代码,说明如何实例化iframe?例如,您是否在iframe中加载jQuery?@Šime Vidas:我正在从visual sudio运行该站点,因为这些更改尚未实现。感谢您的分析。我正准备用我的网站来解决这个问题,这将非常有帮助。谢谢,我也遇到了同样的问题。你帮我省去了很多挫折。看起来这种行为来自于有文件记录的IE9更改:。你认为这个答案让我免于发疯-谢谢!我很高兴它帮助了你,@garethowen它是添加到DOM之前还是之后的源代码集?一旦进入DOM,它会被移动吗?如果是,尽量避免。另外:这应该是一个答案吗?源从来没有设置,因为iframe只是用来作为页面提交的目标。我想不起来这是否发生在我身上(很久以前)。