今天解决了一个困扰我们很久的一个问题(说是很久,但一直没有花时间去research,想想不影响功能使用,没什么啊。而真正解决问题,也就那二十来分钟,哎!人已经懒惰成这样了)。
问题描述:
我们利用ajax做了一套系统,但通过https访问的时候,IE总会弹出下面的对话框:

而在我们的代码中所有的访问都是通过https的,怎么会有不安全的元素呢?在网上google了一下,有人提到可能是iframe的问题。而在我们系统中确实用到了很多的iframe。修改code,去掉所有的iframe。再次run,上面的对话框没有了,终于找到原因了。但是我们的系统中是需要iframe啊?请看下面的code:
1
var iframe=document.createElement("iframe");
2
iframe.style.zIndex=-1;
3
iframe.style.position="absolute";
4
iframe.style.left=0;
5
iframe.style.top=0;
6
iframe.style.width=menu.getSize().x-2;
7
iframe.style.height=menu.getSize().y-4;
8
menu.getHtmlElement().appendChild(iframe);
从上面的code,可以看出代码中没有指定src属性,这样IE是没有办法知道这个iframe将引用的是安全内容还是不安全内容呢。所以会弹出上面的对话框。增加src属性,修改code:
var iframe=document.createElement("<iframe src='blank.html'>");//src是个只读属性,不能直接赋值,black.html是个空的静态页面。
再次run,对话框没有了,问题解决。
附录:
在IE下,如果div悬浮在select上面。select会透过div显示出来。这非常影响视觉效果。网上有很多的解决办法,其中一个就是在div中增加iframe。我们就是通过这个方法的,但又产生了这个问题。
发表于 2007-08-15 16:15 swingboat 阅读(1855) 评论(1) 编辑 收藏 所属分类: javascript&DHTML&CSS

# re: 可恶的“本页不但包含安全的内容,也包含不安全的内容。是否显示不安全的内容”对话框?
下面还有一种方法解决这个问题,而且不用创建一个空的页面。
修改iframe的src属性:
var iframe=document.createElement("<iframe src='javascript:\"\"'>");
运行效果一样。
但在这里我发现有一个有趣的现象。修改代码如下:
var iframe=document.createElement("<iframe src='javascrip:'>");
运行后发现,在firefox下,当运行到上面语句的时候,firefox将会两次弹出错误控制台。很奇怪啊!!!
本文解决了在使用IE浏览器访问HTTPS网站时出现的安全内容警告问题。通过调整iframe的src属性为安全来源,避免了警告弹窗的出现。
4079

被折叠的 条评论
为什么被折叠?



