ie9下jsp渲染可能會受alert的阻擋。ie8下沒有問題。
問題描述: 一個jsp,用了JQuery綁定了畫面初期化事件($(function()),初期化事件中有alert(),
IE8下alert彈出消息對話框的瞬間,jsp頁面正常在浏覽器下被渲染;
但是IE9下,alert彈出消息對話框瞬間,jsp頁面不被渲染,顯示個白頁,當點擊alert中的“OK”後,頁面才被渲染。
IE9下如何才能達到和IE8下同樣的效果? 試了ie9的兼容模式,不起作用。Jsp代碼中強制使用ie8解析模式,也不起作用。
解決辦法: 通過將alert或confirm包裝一層setTimeout。
復制代碼 代碼如下:
$(document).ready(function() {
setTimeout(test,0);
});
function test() {
if(confirm('OK?')) {
alert("think you!");
}
}
猜測結論: 用setTimeout方式可以解決問題。
setTimeout("alert('XXX')", 0 );
ie9下這個問題與JQuery沒有關系。使用setTimeout後,應該是重啟了另外一個線程進行alert,這樣就不會阻止jsp的正常渲染了。