避免javascript打开新窗口被拦截

来源:互联网 发布:java配置文件路径 编辑:程序博客网 时间:2024/06/18 18:16

新窗口打开页面,一个很常用的效果,至于代码,一般第一反应都是这么写:

window.open(url);

但是主流的浏览器都会拦截这种效果(这年头弹窗广告太多了,不拦截用户受不了)

为了避免弹窗被拦截,一般都是利用a标签来打开一个新的页面,利用a标签的target="_blank"属性,一般根据情况使用下面这两种方法:

1、由点击事件触发新窗口打开:

可以将触发点击的按钮改成: 

      <a href="javascript:void(0)"  target="_blank" id="openWindow"></a>

        点击事件写成 : 

 $("#openWindow").click(function(e){$(this).attr("href","http://www.csdn.net/");});

按照事件触发的顺序,点击的时候修改a标签的href,然后不中断默认事件,会接着触发a标签的默认事件,打开一个新的页面

注意:如果需要打开新窗口,click事件中不能使用return false,e.preventDefault();等中断默认事件的语句

2、其他情况:如果没有一个a标签用来打开页面,那么我们就创造一个新的a标签出来,再模拟这个a标签的点击事件

jq写法:

function openWindow(url){var link = $("<a></a>").attr("href",url).attr("target","_blank");$("body").append(link);link[0].click();link.remove();}

原生态写法:

function openWindow(url){var link = document.createElement('a');link.target = "_blank";link.href = url;       document.body.appendChild(link);link.click();document.body.removechild(link);}



0 0
原创粉丝点击