【问题标题】:IE11 IFrame contents does not loadIE11 IFrame 内容不加载
【发布时间】:2015-06-25 15:38:04
【问题描述】:

我又遇到了 IE 问题。我正在尝试使用 iframe 在模式对话框中显示我的应用程序的另一个页面。

与 chrome 和 firefox 完美配合。但是,IE 显示 iframe 空白。如果我用开发者工具检查它,我会看到。

<html>
  <head></head>
  <body></body>
</html>

例如,如果我将 iframe src 元素更改为 bing.com,它就可以工作。我试图设置位置:相对等它不起作用。这是 iframe 标记:

<iframe height="710" id="trackingtableIframe" src="https://localhost:44300/#resources/1174/info?iframe=true" style="border: currentColor; border-image: none; width: 100%;"></iframe>

编辑:我为解决此问题所采取的步骤以及结果:

  • 删除了 iframe 的所有动态生成,(不显示)
  • 自 HTTPS 以来安装了站点证书,(未显示)
  • 将 Iframe 相对 URL 更改为完整 URL,(不显示)
  • 将 iframe 网址更改为任何其他网站,(显示中)
  • 剥离了我网页的所有内容,创建了一个 test.html 网页,其中只有 iframe 标记指向具有正确 URL 的正确页面(显示)

【问题讨论】:

  • 我很确定这是因为您的 iframe URL 引用了一个使用 https 的安全站点。您的域是否启用了 SSL?
  • @crazymatt 它尚未部署在域上,我正在使用 IISExpress 在本地进行测试,并且启用了 SSL。我虽然它可能是不受信任的自签名证书,但我尝试安装它,但它仍然无法正常工作。

标签: asp.net-mvc-4 internet-explorer iframe iis-express


【解决方案1】:

我发现了这个问题以及如何解决它。

问题是我的 Web 应用程序是使用 .NET MVC/Durandal/Breeze 的单页应用程序。由于它是一个 SPA,所有的路由都是通过 javascript 完成的,并且页面 URL 是在 #/resources/info/1

这样的主题标签前缀之后设置的

从浏览器的角度来看,这种行为会导致所有页面都具有相同的 URL。由于 IFrame URL 和当前页面 URL 相同,IE 没有加载它。向同一个索引控制器添加一个新的“虚拟”路由是我解决这个问题的方法。

        System.Web.Routing.RouteTable.Routes.MapRoute(
            name: "Iframe",
            url: "Iframe/{controller}/{action}/{id}",
            defaults: new
            {
                controller = "HotTowel",
                action = "Index",
                id = UrlParameter.Optional
            }
        );

【讨论】:

  • 您也可以将 src 指向 index.html。这在 IE11 中对我有用:&lt;iframe src=`./index.html${window.location.hash}` ...&gt;&lt;/iframe&gt;
  • 这个保存给我
猜你喜欢
  • 2016-02-11
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多