这与SSL and mixed content due to CSS background images有关,但这个问题没有被接受的答案,而我要问的是一个更具体的问题。
在访问HTTPS网站的某些情况下,如果为某个元素指定了带背景图片的样式,IE将抛出“混合内容”警告。我发现one forum reference表示如果将引用放在样式表中就可以避免警告,例如
#someElement a {
width:11px;
height:11px;
display:block;
overflow:hidden;
background:url(../images/sprites_list.png) no-repeat;
cursor:hand;
cursor:pointer;
background-position:0px -72px;
}
但是如果你尝试创建内联元素,那就不是了,
$('#someElement').append("<a title='something' style='background: url(../images/sprites_list.png) no-repeat; ... // etc
事实上,这对我有用。我见过其他人说你必须使用绝对的https
网址来引用图片,而不是相对的图片。
这里的真实故事是什么?是否有一些“官方”解释或至少提到规则是什么?或者如果没有,是否有一套标准的指导方针,如果遵循这些指导方针,则极不可能触发警告?
答案 0 :(得分:10)
使用完全限定的URI可以避免IE8及以下问题错误地创建一个虚假的URI,例如:/relative/file.png,它会触发混合内容警告。在IE9中修复了此问题。
答案 1 :(得分:0)
我认为你获得不同结果的原因不是因为一种方法“更安全”,而是因为当IE加载它时,基本文档中不存在违规URL。如果您将A
直接放在文档中而不是在页面加载后将其编入脚本,我希望您会收到警告。
如果我的诊断正确,那就意味着对混合内容的规则没有任何尚未记录的怪癖。
此外:协议相对URL非常棒。总的来说。
答案 2 :(得分:0)
经过无数小时的同样问题,我无法弄清楚问题。然后我开始挑选我的源代码并找到它。我正在使用HTML5,并且我在条件注释中使用了一个shiv来使HTML5元素在IE8中运行并向下运行。
<!--[if lte IE 8]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
我的问题是IE8和down发生错误。通过将以上内容更改为https来解决该问题,具体如下:
<!--[if lte IE 8]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
我没有对它进行过测试,但我认为以下内容也可能有用。
<!--[if lte IE 8]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
这可能会挽救一些人。如果没有,那么祝你好运!