支付彈出窗口被攔截解決辦法

看過很多解決這個辦法的文章,但是對於ajax請求的彈出窗都沒什麼用,直到看到了這邊文章才豁然開朗,其實是很簡單的,下面是複製過來的文章。

window.open是javascript函數,該函數的作用是打開一個新窗口或這改變原來的窗口,不過一般用來的是打開新窗口,因爲修改原來的網頁地址,可以使用window.location,可以重定向網頁地址,使網頁跳轉到另一個頁面。

但是一般情況下,如果直接在js中調用window.open()函數去打開一個新窗口,瀏覽器會對彈出的窗口進行攔截,因爲瀏覽器會把該窗口認爲是彈出廣告等用戶不想得到的窗體,如果不想讓瀏覽器攔截,解決的方法是把window.open()函數改爲由用戶主動點擊時觸發,這樣瀏覽器就認爲是用戶想訪問這個頁面,而不是直接彈出給用戶。

所以常用的方法就是在超鏈接里加入onclick事件,如

<a href="javascript:void(0)" onclick="window.open()"></a>

這樣用戶點擊這個超鏈接,瀏覽器會認爲它是打開一個新的鏈接,所以就不會攔截。

可是有時候會遇到想要彈出一個窗口,可是卻是在onckick事件執行後,纔去彈出來的,比如使用了$.JSON,點擊獲取數據後,再跳轉到新頁面,這時就會被瀏覽器攔截,我們可以通過下面的方法來避免,就是先用window.open打開一個窗口,然後修改該窗口地址。

如在$.JSON前面定義變量打開一個窗口,代碼如下:

var tempwindow=window.open();

然後對$.JSON返回的地址使用以下代碼使這個窗口跳轉到指定網址,這樣就會呈現彈出新窗口的效果了,而且不會被瀏覽器攔截。

tempwindow.location='/jump/new';

把上面跳轉的地址改爲$.JSON返回的變量或自己想要跳轉到的網頁。

轉自:http://www.tuicool.com/articles/qaYzmey

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章