IE 11 缺少 iFrame [更新] URL 问题
IE 11 missing iFrame [UPDATE] URL issue
内部 "a.aspx" 代码基本上是这样的:
...
<iframe id="b.aspx" frameborder="0" scrolling="no" src=""></iframe>
...
iframe 有空的 SRC 和 runat="server",在代码隐藏 (C#) 中我们做这样的事情:
idOfIFrame.Attributes["src"] = "..."
问题是没有iframe。在查看源代码中,可以清楚地看到我们有一个 "valid" src url,由代码隐藏添加。但是iframe所在的页面是空的
它 运行 好几个月/几年。直到用户升级了IE11.
我有 IE 11.0.9600.18097 11.0.25 (KB3100773),用户有 IE 11.0.9600.18314 11.0.31 (KB3154070)。看来这可能是导致问题的原因,因为我升级了,现在我可以在我的开发机器上重现丢失的 iframe。
我花时间玩了一下URL,我在新的浏览器选项卡中打开了里面的小iframe。点击进入,仍然是空的。我应该有代码的地方,什么也没有。
我在 aspx 文件中有这个:
<div>
<asp:GridView>
<Columns>
<asp:TemplateField>
<itemtemplate>
<table>
...
在旧版IE中,显示为:
<div>
<div>
<table></table>
</div>
</div>
在新版IE中,呈现为:
<div>
<div>
</div>
</div>
知道问题出在哪里吗?
我可以同时在两台计算机上打开同一页面(所有相同的兼容性设置等等),另一台可以工作,而我的不行。
[更新]
我发现这是一个 URL 问题。
我正在像这样在 C# 中构建 URL:
ifr.Attributes["src"] = "../../xyz.aspx?Module=ToDo&Allow=0&isOk=" + isOk
查看源显示如下:
"../../xyz.aspx?Module=ToDo&Allow=0&isOk=" + isOk
似乎这个版本的 IE 不再识别 URL-s 中的 &
。老实说,我认为这是一个 MS IE 11 错误。我的变量默认为零,而不是 URL QueryStringParameter.
的 ID
正如我在上面发布的那样,我发现了问题(请参阅 [更新] 部分)
我的临时修复很简单:
document.getElementById('<%=ifr.ClientID%>').src = document.getElementById('<%=ifr.ClientID%>').src;
是的,我添加了一个重新加载 iFrame 的 JS 东西。基本上 Iframe 现在被加载了两次(一次 ID 为零,一次 ID 正确),这不是解决这个问题的最漂亮的方法,但我很确定这是一个 MSIE11 问题,这会解决现在。
内部 "a.aspx" 代码基本上是这样的:
...
<iframe id="b.aspx" frameborder="0" scrolling="no" src=""></iframe>
...
iframe 有空的 SRC 和 runat="server",在代码隐藏 (C#) 中我们做这样的事情:
idOfIFrame.Attributes["src"] = "..."
问题是没有iframe。在查看源代码中,可以清楚地看到我们有一个 "valid" src url,由代码隐藏添加。但是iframe所在的页面是空的
它 运行 好几个月/几年。直到用户升级了IE11.
我有 IE 11.0.9600.18097 11.0.25 (KB3100773),用户有 IE 11.0.9600.18314 11.0.31 (KB3154070)。看来这可能是导致问题的原因,因为我升级了,现在我可以在我的开发机器上重现丢失的 iframe。
我花时间玩了一下URL,我在新的浏览器选项卡中打开了里面的小iframe。点击进入,仍然是空的。我应该有代码的地方,什么也没有。
我在 aspx 文件中有这个:
<div>
<asp:GridView>
<Columns>
<asp:TemplateField>
<itemtemplate>
<table>
...
在旧版IE中,显示为:
<div>
<div>
<table></table>
</div>
</div>
在新版IE中,呈现为:
<div>
<div>
</div>
</div>
知道问题出在哪里吗? 我可以同时在两台计算机上打开同一页面(所有相同的兼容性设置等等),另一台可以工作,而我的不行。
[更新]
我发现这是一个 URL 问题。 我正在像这样在 C# 中构建 URL:
ifr.Attributes["src"] = "../../xyz.aspx?Module=ToDo&Allow=0&isOk=" + isOk
查看源显示如下:
"../../xyz.aspx?Module=ToDo&Allow=0&isOk=" + isOk
似乎这个版本的 IE 不再识别 URL-s 中的 &
。老实说,我认为这是一个 MS IE 11 错误。我的变量默认为零,而不是 URL QueryStringParameter.
正如我在上面发布的那样,我发现了问题(请参阅 [更新] 部分)
我的临时修复很简单:
document.getElementById('<%=ifr.ClientID%>').src = document.getElementById('<%=ifr.ClientID%>').src;
是的,我添加了一个重新加载 iFrame 的 JS 东西。基本上 Iframe 现在被加载了两次(一次 ID 为零,一次 ID 正确),这不是解决这个问题的最漂亮的方法,但我很确定这是一个 MSIE11 问题,这会解决现在。