天天看點

ajax請求成功回調函數中新視窗被攔截的解決方法

需求是在ajax請求的成功回調函數中,打開一個浏覽器新頁面 (window.open),但無法打開,

一直以為是主流的浏覽器都會攔截這種效果(這年頭彈窗廣告太多了,不攔截使用者受不了)

初始代碼如下:

$.ajax({
				url: url,
				type: "post",
				dataType: "json",				
				data: $("#Form").serialize(),
				success: function(url) {	
				 window.open(url,'_blank');
				 $("#btn_cancel").trigger("click");
										
				}
			});
           

原來當

window.open

為使用者觸發事件内部或者加載時,不會被攔截,一旦将彈出代碼移動到一段異步代碼内部,就會被攔截。

是以我們通過

ajax

必須設定成同步模式即可解決(預設是異步的)。

$.ajax({
				url: url,
				type: "post",
				dataType: "json",
                                async:false,				
				data: $("#Form").serialize(),
				success: function(url) {	
				 window.open(url,'_blank');
				 $("#btn_cancel").trigger("click");
										
				}
			});
           

問題成功解決.

bug

繼續閱讀