【问题标题】:IE7 and 8 gives mixed content warning when page is load with JQuery.load使用 JQuery.load 加载页面时,IE7 和 8 会给出混合内容警告
【发布时间】:2012-01-17 00:03:52
【问题描述】:

我有一个以两种不同方式加载的网页;用户可以单击其链接,它将在同一浏览器窗口中加载该页面;否则,可以在 JQuery 对话框中查看同一页面,而该页面的内容区域仅显示在弹出窗口中。当此页面在主浏览器窗口中加载时,它在所有浏览器(所有版本)中都可以正常工作,但是当我在弹出窗口中加载它时,它仅在 IE7 和 IE8 中给出混合内容警告。

我花了一整天的时间寻找它的根本原因,但没有成功。我已经尝试了以下帖子中建议的所有修复:

  1. 所有链接要么是相对的,要么在 url 中明确包含 https:。
  2. 对于浏览器下载的任何资源,我没有任何 404 消息。
  3. 我查看了 Fiddler treffic,所有请求都是 https。
  4. <script> 标签中没有src="javascript:" 属性。
  5. 我不会删除任何直接在 style 属性中定义 background-image:url 样式的 div。

如您所见,我已经尝试了所有在线可用的建议/修复,但没有运气。我非常感谢这方面的帮助。

谢谢, 导航

【问题讨论】:

  • 谷歌广告之类的东西呢?

标签: jquery internet-explorer-8 https internet-explorer-7 load


【解决方案1】:

我花了很长时间研究我自己的版本。最终帮助我找到答案的是在 IE8 模式下使用 IE10 - 这给出了一个实际的特定错误。如果您有类似的问题,我强烈建议您这样做,并且 Fiddler 或 HttpWatch 向您保证您实际上并未加载任何 HTTP。

对我来说问题出在将样式表链接附加到头部的脚本上:

$("head").append('<link href="//example.com/stylesheets/icons" media="screen" rel="stylesheet" type="text/css" />');

IE8 通常可以很好地处理协议相关的 URL,但在这种情况下显然不是。我必须提供一个明确的协议:

$("head").append('<link href="'+window.location.protocol+'//example.com/stylesheets/icons" media="screen" rel="stylesheet" type="text/css" />');

丑陋但实用。希望这可以避免一些人头疼!

【讨论】:

    【解决方案2】:

    我终于能够解决这个问题,并在此处发布解决方案,供任何在网络上四处寻找根本原因的可怜人使用。在我的情况下,这是由于在 3 个不同的标签(例如)上使用了无效的“背景”属性引起的,出于某种原因,IE7 和 IE8 仅在将这些页面加载到 jquery 对话框中时才发出混合内容警告。如果在浏览器中直接加载相同的页面,则没有警告。所以我仍然不知道为什么会这样。可能一些专家可以解释为什么它会这样。 感谢大家的回复。

    【讨论】:

      【解决方案3】:

      常见的罪魁祸首包括 CSS、iframe URL 和脚本 URL 引用的图像。

      你说你在 Fiddler 中没有看到 HTTP 请求;但也许那是因为它目前正在阻止非安全资源。告诉您的浏览器获取所有非安全资源,然后观看 Fiddler。

      【讨论】:

        猜你喜欢
        • 2018-01-31
        • 1970-01-01
        • 2010-10-17
        • 1970-01-01
        • 2016-06-22
        • 2017-12-04
        • 1970-01-01
        • 2017-02-04
        • 1970-01-01
        相关资源
        最近更新 更多