看過很多解決這個辦法的文章,但是對於ajax請求的彈出窗都沒什么用,直到看到了這邊文章才豁然開朗,其實是很簡單的,下面是復制過來的文章。
window.open是javascript函數,該函數的作用是打開一個新窗口或這改變原來的窗口,不過一般用來的是打開新窗口,因為修改原來的網頁地址,可以使用window.location,可以重定向網頁地址,使網頁跳轉到另一個頁面。
但是一般情況下,如果直接在js中調用window.open()函數去打開一個新窗口,瀏覽器會對彈出的窗口進行攔截,因為瀏覽器會把該窗口認為是彈出廣告等用戶不想得到的窗體,如果不想讓瀏覽器攔截,解決的方法是把window.open()函數改為由用戶主動點擊時觸發,這樣瀏覽器就認為是用戶想訪問這個頁面,而不是直接彈出給用戶。
所以常用的方法就是在超鏈接里加入onclick事件,如
1
|
<
a
href="javascript:void(0)" onclick="window.open()"></
a
>
|
這樣用戶點擊這個超鏈接,瀏覽器會認為它是打開一個新的鏈接,所以就不會攔截。
可是有時候會遇到想要彈出一個窗口,可是卻是在onckick事件執行后,才去彈出來的,比如使用了$.JSON,點擊獲取數據后,再跳轉到新頁面,這時就會被瀏覽器攔截,我們可以通過下面的方法來避免,就是先用window.open打開一個窗口,然后修改該窗口地址。
如在$.JSON前面定義變量打開一個窗口,代碼如下:
var tempwindow=window.open();
然后對$.JSON返回的地址使用以下代碼使這個窗口跳轉到指定網址,這樣就會呈現彈出新窗口的效果了,而且不會被瀏覽器攔截。
1
|
tempwindow.location='/jump/new';
|
把上面跳轉的地址改為$.JSON返回的變量或自己想要跳轉到的網頁。
轉自:http://www.tuicool.com/articles/qaYzmey