今天解決了一個(gè)困擾我們很久的一個(gè)問題(說是很久,但一直沒有花時(shí)間去research,想想不影響功能使用,沒什么啊。而真正解決問題,也就那二十來分鐘,哎!人已經(jīng)懶惰成這樣了)。
問題描述:
我們利用ajax做了一套系統(tǒng),但通過https訪問的時(shí)候,IE總會(huì)彈出下面的對(duì)話框:
而在我們的代碼中所有的訪問都是通過https的,怎么會(huì)有不安全的元素呢?在網(wǎng)上google了一下,有人提到可能是iframe的問題。而在我們系統(tǒng)中確實(shí)用到了很多的iframe。修改code,去掉所有的iframe。再次run,上面的對(duì)話框沒有了,終于找到原因了。但是我們的系統(tǒng)中是需要iframe啊?請(qǐng)看下面的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);

2

3

4

5

6

7

8

從上面的code,可以看出代碼中沒有指定src屬性,這樣IE是沒有辦法知道這個(gè)iframe將引用的是安全內(nèi)容還是不安全內(nèi)容呢。所以會(huì)彈出上面的對(duì)話框。增加src屬性,修改code:

再次run,對(duì)話框沒有了,問題解決。
附錄:
在IE下,如果div懸浮在select上面。select會(huì)透過div顯示出來。這非常影響視覺效果。網(wǎng)上有很多的解決辦法,其中一個(gè)就是在div中增加iframe。我們就是通過這個(gè)方法的,但又產(chǎn)生了這個(gè)問題。
修改iframe的src屬性:
var iframe=document.createElement("<iframe src='javascript:\"\"'>");
運(yùn)行效果一樣。
但在這里我發(fā)現(xiàn)有一個(gè)有趣的現(xiàn)象。修改代碼如下:
var iframe=document.createElement("<iframe src='javascrip:'>");
運(yùn)行后發(fā)現(xiàn),在firefox下,當(dāng)運(yùn)行到上面語句的時(shí)候,firefox將會(huì)兩次彈出錯(cuò)誤控制臺(tái)。很奇怪啊!!!
這樣的,照樣出現(xiàn)提示。不知道為何?