今天解決了一個(gè)困擾我們很久的一個(gè)問題(說(shuō)是很久,但一直沒有花時(shí)間去research,想想不影響功能使用,沒什么啊。而真正解決問題,也就那二十來(lái)分鐘,哎!人已經(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:

1var 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是沒有辦法知道這個(gè)iframe將引用的是安全內(nèi)容還是不安全內(nèi)容呢。所以會(huì)彈出上面的對(duì)話框。增加src屬性,修改code:

var iframe=document.createElement("<iframe src='blank.html'>");//src是個(gè)只讀屬性,不能直接賦值,black.html是個(gè)空的靜態(tài)頁(yè)面。

再次run,對(duì)話框沒有了,問題解決。

附錄:

在IE下,如果div懸浮在select上面。select會(huì)透過div顯示出來(lái)。這非常影響視覺效果。網(wǎng)上有很多的解決辦法,其中一個(gè)就是在div中增加iframe。我們就是通過這個(gè)方法的,但又產(chǎn)生了這個(gè)問題。