1. 程式人生 > >window.open開啟新視窗被瀏覽器攔截的處理方法

window.open開啟新視窗被瀏覽器攔截的處理方法

window.open是javascript函式,該函式的作用是開啟一個新視窗或這改變原來的視窗,如果你直接在js中呼叫window.open()函式去開啟一個新視窗,瀏覽器會攔截你,那麼如何避免呢。

注意,只有直接使用js呼叫 window.open(url); 開啟新視窗時,才會被攔截,如果是改變原理額視窗:window.open(url,'_self'); 則不會被攔截。

那麼 js呼叫 window.open(url); 開啟新視窗,如何才能不會瀏覽器攔截呢?

瀏覽器會攔截你,是認為你將彈出廣告等使用者不想得到的窗體,所以如果不想讓瀏覽器攔截你,你可以將這個函式改為使用者點選時觸發,這樣瀏覽器就認為是使用者想訪問這個頁面,而不是你直接彈出給使用者。

0)最好的解決方法:

var form = document.createElement('form');
form.action = 'www.baidu.com?id=1';
form.target = '_blank';

form.method = 'POST';

document.body.appendChild(form);
form.submit();

這種方式,如果需要傳遞引數時,需要使用 POST 方法, 預設的get方法, 無法傳遞引數。也就是新頁面的url中沒有引數部分。

另外,Ajax下載檔案時也是用form 表單來模擬下載。


1)所以常用的方法就是在超連結里加入onclick事件,如<a href="javascript:void(0)" onclick="window.open()"></a>這樣使用者點選這個超連結,瀏覽器會認為它是開啟一個新的連結,所以就不會攔 截。

2)還有一種方法:

      setTimeout('window.open(url);', 500);

使用 setTimeout 包裝一下,也可以防止被瀏覽器攔截。注意這裡的超時時間不能太短,否則也會被攔截。

3)可是有時候我們會遇到想要彈出一個視窗,可是卻是在onckick事件執行後,才去彈出來的,這時就會被瀏覽器攔截,我們可以通過下面的方法來避免,就是 先用window.open開啟一個視窗,然後修改地址。如

var tempwindow=window.open('_blank');開啟一個視窗,然後用

tempwindow.location='http://www.baidu.com';

使這個視窗跳轉到百度,這樣就會呈現彈出百度視窗的效果了。

相關推薦

window.open開啟視窗瀏覽器攔截處理方法

window.open是javascript函式,該函式的作用是開啟一個新視窗或這改變原來的視窗,如果你直接在js中呼叫window.open()函式去開啟一個新視窗,瀏覽器會攔截你,那麼如何避免呢。 注意,只有直接使用js呼叫 window.open(url); 開啟新視窗時,才會被攔截,如果是改變原理額

vue 路由跳轉開啟視窗(瀏覽器攔截)

今天做了一個功能是點選按鈕路由跳轉開啟新的視窗頁面 第一種方法 <router-link target="_blank" :to="{path:'/FundManger/FundProductMoney', query:{managerId:fundcode}}&

幾個主流瀏覽器 Window.open開啟視窗 、模擬a標籤開啟視窗的 表現

Window.open開啟新視窗 1、常用瀏覽器開啟新視窗(正常開啟window.open)的的不同表現形式(PC/移動端) 2、Window.open在非同步處理中開啟(_blank) a標籤在非同步處理中開啟 -公眾號跳轉的微信瀏覽器都是單視窗多頁面開啟,沒有tab頁,詳情頁返回都會重新

WPF WebBrowser 使用window.open()開啟 視窗相關問題的解決

WPF 中使用WebBrowser控制元件 開啟Web站點。如果Web 頁面中 使用Window.Open 開啟新視窗,那麼新視窗將使用一個新的Session. 因為新視窗 和 父視窗不共享cookie. 在網上找了很多,沒有比較好的解決方法。 後來嘗試了Window.s

開啟頁面瀏覽器攔截的問題

專案中,需求是先開啟彈窗完成資料校驗請求後,再開啟新的頁面,做表單資料的處理;程式碼完成後,彈出頁面的時候,總是被瀏覽器攔截,原因是瀏覽器的安全機制,防止非使用者操作彈出頁面,阻止廣告等非法頁面彈出,網上提供了一下幾種解決辦法:1. 使用window.open(url,"_b

瀏覽器開啟視窗攔截問題

1. window.open() 方法和 form表單的submit方法 需要使用者點選事件觸發,將其直接寫在點選事件內部,未被攔截 <!DOCTYPE html> <html lang="en"> <head> <met

非同步請求後根據結果window.open方式開啟頁面,瀏覽器攔截彈窗問題

專案中出現一個問題,要求根據從後臺非同步請求後的結果開啟新的標籤頁,發現使用window.location.href=”地址”,該方法沒有問題,但是使用window.open開啟新頁面的時候會無效。

ajax 請求開啟視窗攔截

ajax 請求開啟新視窗被攔截 解決方法一: 先開始開啟一個空的新視窗,然後改變新視窗的 url function demo() { //未請求前開啟新視窗 var newPage = window.open(); $.ajax({ url: "

window.open() 某些情況會瀏覽器阻止彈出視窗

window.open() 的作用是建立一個新的瀏覽器視窗用來開啟相關的資源,這是一個原生的 Javascript API 介面。有關 window.open() 的基本使用可以參考 mozilla 提供的  API 文件:window.open 。大部分現代的瀏覽器(泛指

window.open() 某些情況會瀏覽器阻止彈出窗口及解決辦法

默認 多次 location body 使用 www 介紹 fin 代碼   window.open() 的作用是創建一個新的瀏覽器窗口用來打開相關的資源,這是一個原生的 Javascript API 接口。   有關 window.open() 的基本使用可以參考 moz

ajax回撥開啟窗體防止瀏覽器攔截

function click_fun(){ window.open("www.baidu.com");//能開啟 $.ajax({ 'url': '${pageCo

關於window.open()開啟頁面會彈出Object頁面的幾點說明

 1.如果是在前臺用超連結如<a href="javascript:window.open('webAdress.aspx ')"></a>開啟新頁面時會彈出一個內容頁為object的頁面,解決方案是呼叫下面的OpenWin()可以防止這種現象<

解決模式對話方塊和window.open開啟頁面Session會丟失問題

模式對話方塊頁面通過超連結(_blank類)或window.open開啟新頁面Session會丟失 解決方法如下: 在使用showModalDialog時會經常出現Session失效的問題,尤其是在這樣的使用情況下: 首先window. showModalDialog,然後

window.open開啟一個視窗,關閉後再開啟視窗失效

一個表格上有許多列,雙擊每一列,開啟一個視窗顯示明細。但是關閉這個視窗之後,再想開啟這個視窗,怎麼點都沒有反應。在程式碼裡面加alert,發現第二次開啟時,執行到open時,直接就跳過去了。然後在網上一查,才知道window.open()不能重複開啟同一個名字的視窗。比如w

window.open(url)開啟連結瀏覽器攔截解決方案

瀏覽器為了維護使用者安全和體驗,禁止在JS中直接使用window.open(url)來開啟新的連結(window.open(url,”_self”)改變當前的視窗是可以生效的)。下面採用幾種變通方

window.open開啟視窗攔截的快速解決方法

window.open是javascript函式,該函式的作用是開啟一個新視窗或這改變原來的視窗,不過一般用來的是開啟新視窗,因為修改原來的網頁地址,可以有另一個函式,那就是window.location,他可以重定向網頁地址,使網頁跳轉到另一個頁面。 我現在要說的是wi

window.open瀏覽器攔截的解決方案

方案 attr fun click open target win element blog function newWin(url, id) { var a = document.createElement(‘a‘);

瀏覽器攔截開啟視窗情況總結

在開啟一個新視窗時,由於瀏覽器的安全機制,使用者未始終允許的情況下,可能會觸發到瀏覽器攔截,無法正常直接彈出。 網上有很多給出解決方案的隻言片語,不夠全面,所以針對自己遇到的問題做了詳細的情況分析。總結成文,避免以後混淆。 只分析列舉使用 js 程式碼手動開啟新視窗的方式。 測試程式碼用例在此 幾種開

window.open方法瀏覽器攔截處理方式

問題現象 當我們在一個 ajax 回撥中執行 window.open 方法時,新頁面會被瀏覽器攔截。 原因 在 Chrome 的安全機制裡,非使用者直接觸發的 window.open 方法,是會被攔截的。 處理 $('#jump-btn').on('click', funct

window.open()瀏覽器攔截問題

一、原因 瀏覽器為了維護使用者安全和體驗,在JS中直接使用window.open(url,"_blank")來開啟新的連結是會被攔截的,(window.open(url,”_self”)改變當前的視窗是可以生效的),通常專案需要在ajax非同步請求完成後來開啟新連結,下面提供幾種解決方案 二