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

2

3

4

5

6

7

8

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

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