window.open打开新窗口被浏览器拦截的处理方法

一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.location.reload(), 在某些特殊情况下也要用到另外一种新窗口打开的方法,就是window.open(),这个方法有一个问题就是会被基本所有的浏览器所拦截,要收到点击确认打开才可以,这样的体验可以说是非常不友好的~~ 感觉像一个有病毒的程序~~

所以我们如果一定要用这个方法,但是又不想其被浏览器拦截, 有几种方法,都可以解决,具体如何~~

第一种:

//所以常用的方法就是在超链接里加入onclick事件,如
<a href="javascript:void(0)" onclick="window.open()"></a>
//这样用户点击这个超链接,浏览器会认为它是打开一个新的链接,所以就不会拦 截。

第二种:

setTimeout(‘window.open(url);‘, 500);
//使用 setTimeout 包装一下,也可以防止被浏览器拦截。注意这里的超时时间不能太短,否则也会被拦截。

第三种:

//时候我们会遇到想要弹出一个窗口,可是却是在onckick事件执行后,才去弹出来的,这时就会被浏览器拦截,我们可以通过下面的方法来避免,就是 先用window.open打开一个窗口,然后修改地址。如
var tempwindow=window.open(‘_blank‘);
//打开一个窗口,然后用tempwindow.location=‘http://www.baidu.com‘;使这个窗口跳转到百度,这样就会呈现弹出百度窗口的效果了。

个人觉得第一种方法>第三种方法>第二种方法~~~具体哪个性能更好,没有深入测试过,毕竟这个属性真的很少用~  或许还有更好的方法~~

时间: 2024-10-07 01:21:38

window.open打开新窗口被浏览器拦截的处理方法的相关文章

Flash打开新窗口 被浏览器拦截 navigateToURL被拦截

众所周知,打开新窗口以前经常被用作弹出广告用,而随着浏览器发展,现在估计除了ie6之外,基本都有广告拦截功能,最基本就是拦截这种非人为的弹出新窗口.我对js研究不深,我所了解就是,必须是用户操作的处理过程中,用window.open才能顺利通过浏览器的拦截检查.同样地,在Flash中,也有很多类似的安全限制,必须是用户操作才能触发一些危险代码的执行(例如,打开文件选择框).  今天,在处理XXXX的时候,点击flash的按钮时,无法正常弹出新窗口.于是,今天专门好好研究一下这个问题.正好,前几天

Ajax提交打开新窗口,浏览器拦截处理

//主要是添加同步处理 $.ajax({ url: "ashx/OrderHander.ashx?action=CheckRepeat", data: { "OrderId": data.OrderNo }, dataType: "json", async:false, type: "post", success: function (data) { if (data == "1") { window.lo

ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式

一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 说明: 1.如果是在 <a href="javascri

window.open()打开新窗口被拦截

window.open( url )是常用的打开新页面的方法,一般都没有问题,但是如果在ajax回调方法里面使用就会被浏览器拦截,因为在浏览器安全机制中,页面弹窗必须是由用户触发的才是安全弹窗,比如说绑定的onclick(),onchange()事件触发,而由ajax或定时器执行的弹窗均为非用户触发,所以会被浏览器安全机制(其他安全软件)理解为非安全弹窗而被拦截. 解决办法一: <div onclick="testFunc()">点击我呀</div> funct

ajax回调打开新窗体防止浏览器拦截

function click_fun(){ window.open("www.baidu.com");//能打开 $.ajax({ 'url': '${pageContext.request.contextPath}/activity/savePrizes.htm', 'type': 'post', 'dataType': 'json', 'data': data, success: function (data) { window.open("www.baidu.com&q

ajax回调打开新窗体被浏览器拦截

1 function click_fun(){ 2 3 $.ajax({ 4 'url': '${pageContext.request.contextPath}/action/', 5 'type': 'post', 6 'dataType': 'json', 7 'data': data, 8 success: function (data) { 9 window.open("www.baidu.com");//被拦截 10 }, 11 error:function(){ 12 1

js window.open打开新窗口原页面出现[object window]解决办法

解决方法: 1.<a href="javascript:window.open('about:blank','_blank');void(0);">ddd</a>只需要在href中加入void(0);即可2.<a href="#" onclick="window.open('about:blank','_blank')">ddd</a> window.open()函数说明: 函数原型:window.

window.open打开新窗口报错ie 位指明错误,原因是window没有加引号!

function JsMod(htmlurl,tmpWidth,tmpHeight){ htmlurl=getRandomUrl(htmlurl); var newwin = window.open(htmlurl, "window", "height=" + tmpHeight + ",width=" + tmpWidth); window.location.href = window.location.href;} function setS

Js打开新窗口拦截问题整理

一.js打开新窗口,经常被拦截 //js打开新窗口,经常被拦截 //指定本窗口打开,可以使用 window.open('http://www.tianma3798.cn', '_self'); //不指定或指定新窗口打开被拦截 window.open('http://www.tianma3798.cn'); window.open('http://www.tianma3798.cn', '_blank'); 二. 1.如果是用户点击操作,打开新窗口不被拦截 2.如果在ajax回调函数中调用打开新