解決彈出的視窗window.open會被瀏覽器阻止的問題
問題現象
最近在做專案的時候碰到了使用window.open被瀏覽器攔截的情況,有時候會一直連線,有時候會偶爾攔截,
嘗試了很多方法,走了很多彎路,總結一下結果分享大家
原因分析&深入研究
1 當瀏覽器檢測到非使用者操作產生的新彈出視窗,則會對其進行阻止。因為瀏覽器認為這不是使用者希望看到的頁面
2 在chrome的安全機制裡面,非使用者觸發的window.open方法,是會被攔截的。
var btn = $('#btn'); btn.click(function () { //不會被攔截 window.open('http://cssha.com') });
如上 window.open是使用者觸發的時候,是不會被攔截的,可以正常開啟新視窗
var btn = $('#btn'); btn.click(function () { $.ajax({ url: 'ooxx', success: function (url) { //會被攔截 window.open(url); } }) });
如上 使用者沒有直接出發window.open,而是發出一個ajax請求,window.open方法被放在了ajax的回撥函式裡,這樣的情況是會被攔截的
解決方案
先彈出一個頁面,再進行ajax請求,這樣就不會被攔截, 例項程式碼如下
var btn = $('#btn'); btn.click(function () { //開啟一個不被攔截的新視窗 var newWindow = window.open(); $.ajax({ url: 'ooxx', success: function (url) { //修改新視窗的url newWindow.location.href = url; } }) });
繼續進行優化
var btn = $('#btn'); btn.click(function () { //開啟一個不被攔截的新視窗 var adPopup = window.open('about:blank', '_blank','width='+window.screen.width+',height='+window.screen.height+', ...'); $.ajax({ url:'ooxx', type:'post', dataType:'json', success: function (url) { //修改新視窗的url adPopup.blur(); adPopup.opener.focus(); adPopup.location = url; }
})
});
附帶其他彈框方式
//a標籤動態click function newWin(url, id) { var a = document.createElement('a'); a.setAttribute('href', url); a.setAttribute('target', '_blank'); a.setAttribute('id', id); // 防止反覆新增 if(!document.getElementById(id)) document.body.appendChild(a); a.click(); } //定時彈框 setTimeout('window.open(url);', 1); //I LIKE THIS function openwin(url) { var a = document.createElement("a"); a.setAttribute("href", url); a.setAttribute("target", "_blank"); a.setAttribute("id", "openwin"); document.body.appendChild(a); a.click(); }
相關推薦
解決彈出的視窗window.open會被瀏覽器阻止的問題
問題現象最近在做專案的時候碰到了使用window.open被瀏覽器攔截的情況,有時候會一直連線,有時候會偶爾攔截,嘗試了很多方法,走了很多彎路,總結一下結果分享大家原因分析&深入研究1 當瀏覽器檢測到非使用者操作產生的新彈出視窗,則會對其進行阻止。因為瀏覽器認為這不是
解決彈出的視窗window.open會被瀏覽器阻止的問題(自定義open方法)
function openwin(url) { var a = document.createElement("a"); a.setAttribute("href", url); a.setAttribute("target", "_blank");
解決彈出的窗口會被瀏覽器阻止的問題
syn eww 如果 bsp als 返回結果 color new com 常用的打開新窗口的方式 1、window.open() 2、用a標簽的target="_blank" 在模板中插入一個a標簽,然後javascript去觸發a鏈接的click,實現跳轉。(
ajax非同步請求中使用window.open會被瀏覽器攔截解決方案
問題剖析:function click_fun(){ window.open("www.baidu.com");//能開啟 $.ajax({ 'url': '${pageContext.request.contextPath}/activity/sav
ajax請求裡面呼叫window.open會被瀏覽器攔截(優化版)
眾所周知,ajax請求裡面呼叫window.open會被瀏覽器攔截方法有兩種解決辦法,但是經測驗例如ajax改為async:false同步請求還會出現一些問題(比如站點外網址被攔截);第一種解決辦法優化:該方法優點描述:比如ajax回撥函式失敗,瀏覽器預設開啟的空連結會自動關
window.open() 某些情況會被瀏覽器阻止彈出窗口及解決辦法
默認 多次 location body 使用 www 介紹 fin 代碼 window.open() 的作用是創建一個新的瀏覽器窗口用來打開相關的資源,這是一個原生的 Javascript API 接口。 有關 window.open() 的基本使用可以參考 moz
window.open() 某些情況會被瀏覽器阻止彈出視窗
window.open() 的作用是建立一個新的瀏覽器視窗用來開啟相關的資源,這是一個原生的 Javascript API 介面。有關 window.open() 的基本使用可以參考 mozilla 提供的 API 文件:window.open 。大部分現代的瀏覽器(泛指
彈出視窗window.showModelessDialog引數介紹
讓彈出視窗不被Googlebar、Alexabar、3721等視窗攔截工具攔截掉window.showModelessDialog()方法window.showModalDialog(sURL [, vArguments] [, sFeatures])vReturnValue = window.showMod
彈出視窗window.onload失效
今天發現window.onload事件在IE6下彈出視窗失效,在連結開啟的頁面就好好的,在彈出視窗死活不起作用,試了半天找到解決辦法。 原來寫法:window.onload = bindHandler; 解決辦法:window.attachEvent("onload",
window.open方法被瀏覽器攔截的處理方式
問題現象 當我們在一個 ajax 回撥中執行 window.open 方法時,新頁面會被瀏覽器攔截。 原因 在 Chrome 的安全機制裡,非使用者直接觸發的 window.open 方法,是會被攔截的。 處理 $('#jump-btn').on('click', funct
JS中window.open彈出視窗居中
利用下面這個js函式可以使window.open彈出的視窗居中function openwindow(url,name,iWidth,iHeight){var url; //轉向網頁的地址;var name; //網頁名稱,可為空;var iWidth; //彈出視窗的寬度;var iHeight; //彈出
js實現window.open不被攔截的解決方法匯總
line bsp pan 測試 ava cli class 頁面 點擊 一、問題: 今天在處理頁面ajax請求過程中,想實現請求後打開新頁面,就想到通過 js window.open 來實現,但是最終都被瀏覽器攔截了。 二、分析: 在谷歌搜索有沒有解決方法,有些說可以通過新
layui彈出層layer過大被遮擋解決辦法-resize事件自動調整
思路 pla title 位置 相關 無法 dex 前端 情況 遇到的問題 ??最近在使用layui做一個管理系統,由於前端技術有限,在開發過程中也遇到這樣那樣的問題,即比較簡單的問題有時也要搞半天。。??layer彈出窗口在彈出時指定了area,彈出後,如果當前頁面(if
解決彈出層被Flash擋住的問題
function DivOver(objID){var obj = document.all[objID];// 只有IE5.5以上Iframe的z-index才有效if (ie55up){if (overIframe == null){ overIframe = document.createEleme
div彈出視窗在frameset外層解決方案
首頁通過framset經行網頁佈局,現在有個臨時的訊息視窗,ajax返回會彈出來。但是這個就有問題了。div作為網頁元素,是依賴與frame的。怎麼讓其在整個檢視視窗的最上層呢? frmae 連線網頁,會對超過的部分進行遮擋。這裡提供了一種解決方案.先記錄下來。 <
解決jqueryeasyUI dialog 彈出視窗超出瀏覽器,導致不能關閉的bug
使用panel的onMove事件解決了panel,dialog以及window元件在被拖動時,會超出瀏覽器邊界而無法拖回的情況。 當視窗被拖出瀏覽器有邊界時,$(document).width();會增大,增大的部分就是視窗超過瀏覽器視窗的部分,所以right >
windows.open()引數列表(彈出視窗)
前言:經常上網的朋友可能會到過這樣一些網站,一進入首頁立刻會彈出一個視窗,或者按一個連線或按鈕彈出,通常在這個窗口裡會顯示一些注意事項、版權資訊 、警告、歡迎光顧之類的話或者作者想要特別提示的資訊。其實製作這樣的頁面效果非常的容易,只要往該頁面的HTML里加入幾段java
easyui dialog 子視窗jsp(被彈出視窗)呼叫父jsp頁面方法操作父jsp
父jsp(monthDuty.jsp'): <script src="<%=contextPath%>/js/sunnyjs/monthDutyJs.js" type="text/ja
解決input獲取焦點,彈出輸入法之後,input被遮擋的問題
關於input輸入框fixed在視窗底部的時候,input獲取焦點,彈出輸入法,input會被輸入法遮擋,導致輸入內容不方便。 我們可以用scrollIntoView 與 scrollIntoView
一個可以不被廣告攔截器攔截的彈出視窗
/*** 定義ForceWindow類建構函式* 無引數* 無返回值*/function ForceWindow (){ this.r = document.documentElement; this.f = document.createElement("FORM");