(請不要打擾問爲什麼我們支持IE6。)jQuery的模態對話框,IE6安全不安全的錯誤,HTTPS的SSL
我們使用jQuery模態對話框創建自定義的警報/確認。我用xsl創建了一個div(在這些例子中,我將一些xsl輸出並放入原始html以避免混淆)。該div是使用jQuery觸發的。我編寫了幾個函數(基本上打開對話框,傳遞消息和函數),以便我們可以使用javascript實現新的警報/確認(基本上用alert();替換爲uiAlertError();)。
其中一些信息並不重要。我可以得到更具體的,但這裏的主要問題是,在IE6中我得到一個「這個頁面包含安全和非安全的項目,你想顯示不安全的項目?」錯誤。在ie7,ie8,firefox,safari和chrome中一切正常。
從我讀到的有一些常見的問題,如:http://需要https://(或http:// to //,改爲相對絕對),src是空的,混合的內容等等。所有這些(從我所收集的內容)的基本主題是讓事情加載安全,因爲我們在一個安全的頁面上。但這不是我的問題!我已經將問題分離出來,並且與jQuery相關(我測試了新的代碼;得到了錯誤,評論了新的代碼;錯誤消失了,我取消了註釋xsl,但留下了jQuery註釋掉;錯誤仍然消失了,把jQuery評論回來了,錯誤回來了)。
這裏是JavaScript:
下面是我寫的更換警報功能(); :
function uiAlertError(msg, ok_func){
document.getElementById('alert_id_img').src="images/dialog_warning.png";
uiAlert(msg, ok_func);
}
function uiAlertCheck(msg, ok_func){
document.getElementById('alert_id_img').src="images/dialog_check.png";
uiAlert(msg, ok_func);
}
function uiAlert(msg, ok_func){
document.getElementById('alert_id_msg').innerHTML = msg;
$("#alert_id").dialog("open");
$("#alert_ok").click(function(){
if(ok_func == undefined || ok_func == ''){
$("#alert_id").dialog("close");
}else{
eval(ok_func);
$("#alert_id").dialog("close");
}
});
}
這裏是jQuery的:
$(function() {
$("#alert_id").dialog("destroy");
$("#alert_id").dialog({
width: 325,
modal: true,
resizable: false,
draggable: false,
minHeight: 90,
autoOpen: false
});
});
我敢肯定它是與我的任何實施的jQuery jQuery的或本身。
此網頁面向公衆主辦。
感謝您的幫助! Tony
什麼都沒有?我也發現,如果我包裝$(function(){});在諸如runMe()的函數中;然後我打電話給runMe();只要我進入uiAlert();它會抑制頁面加載時顯示的錯誤消息。當你執行runMe()時,錯誤消息會加載。功能。這將它隔離爲一小段代碼。 – TonyB
對於將來會遇到這種情況的人:ie7問題涉及瀏覽器插件。無論出於何種原因,都有一個運行'http://'的插件,這就是錯誤使瀏覽器特定的原因。對於ie6,在頁面加載和$(function(){call。)之間似乎存在某種關聯,如果在函數中包裝$(function(){});然後在調用對話框之前調用該包裝函數,你永遠不會得到這個錯誤(在ie6中)。我正在通過另一種解決方案,但這是一個快速修復(hackjob)。 – TonyB
另一個想法:我注意到bgiframe(我認爲是iframe divshim的jQuery版本)初始化(函數($){})(jQuery);反對傳統的$(function(){});或$(document).ready(function(){});.這似乎工作爲了解決這個問題,我只是調整了樣式(我們有一個ie6特定的css文件),我不得不使用float:right ;,調整一些填充,刪除一個屬性,等等。一切正常,ie6 98%正常工作。 – TonyB