关键词:
在项目开发过程中,我们经常会碰到通过接口返回一个地址,同时在新的tab页面打开一个网址的情况,最直观的想法就是通过window.open(url)的方式,打开一个新的页面,但是大部分浏览器会遭遇拦截。因为大部分现代的浏览器(泛指 Chrome / Firefox / IE 10+ / Safari)都默认开启了阻止弹出窗口的策略,原因是 window.open 被广告商滥用,严重影响用户的使用。这个阻止弹出窗口的操作,并不是直接封杀 windw.open(),而是会根据用户的行为来判断这次 window.open() 是否属于流氓操作。
但是对用户来说,不能要求用户都来通过拦截。何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,百思不得其解,因此我们还是要通过代码来解决这个问题。
方式一:jQuery来帮忙
大部分前端开发都对jQuery比较熟悉,所以我们先以jQuery解决这个问题。jquery是提供了模拟click事件的方法的,$(selector).click()。只不过这里我们要注意的是当要触发a标签点击的时候,<a>标签内一定要有内容,并且要模拟里面的内容被点击而不是<a></a>被点击。
方式二:HTMLElement.click()
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
按照文档里面的介绍,HTMLElement.click()是用来模拟click的方法。这种方法的兼容性如下。
PC
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 20[3] | (Yes) | 5[1] | (Yes) | (Yes)[2] | 6[3] |
[email protected] (limited) |
(Yes) | (Yes) | 4 | (Yes) | 12.10 | (Yes) |
[email protected] (full) |
(Yes) | (Yes) | 4 | (Yes) | No support | (Yes) |
Mobile
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | No support | ? | (Yes) | ? | ? | ? | ? |
方式三:createEvent + initEvent + dispatchEvent
document.createEvent用于创建事件,在DOM Level 2 的事件中就有HTMLEvents,MouseEvents,UIEvents事件类型。
initEvent()方法用于初始化通过DocumentEvent接口创建的Event的值。
dispatchEvent则是触发对应元素上面的某个事件。
方式四:后端重定向
这种方式需要后端协作,先提供一个接口地址,前端通过a标签跳转到该地址,后端通过运算之后,直接重定向到目标地址,这也是方便快捷的方法。
ios端内嵌h5页面点击a标签无反应
...要给他加上cursor:pointer的样式。第二种解决方案是将click事件替换为touchstart事件,或者click事件与touchstart事件并存: 查看详情
a标签的href与click事件
...,href后执行(页面跳转),但可能存在href跳转时,click事件的处理程序还未生效;禁止href执行的方法:(1)href=‘javascript:void(0)’,这时只执行onclick事件,推荐在h 查看详情
怎样用js触发a标签的click事件
...lementById("spanId").click();你要点击的是abc这个所以你模拟点击事件肯定是要点这个abc啊 参考技术B直接元素.click就可以了,比如:<aid="xxx"onclick="abc()">abc</a>然后js里:document.getElementById("xxx").clic... 查看详情
js怎么触发a标签里的href链接
...sp;'_new'; //指定在新窗口打开el.click();//触发打开事件</script> 参考技术B<ahref="xxxxx"id="triggerMe"target="_blank"/>点击</a><script>$("#triggerMe").trigger("click");</script>给a标签... 查看详情
各位大哥html的a标签怎么加入click事件
参考技术A<ahref="javascript:;"onclick="(事件)"></a> 参考技术B超文本标记语言或超文本链接标示语言(标准通用标记语言下的一个应用)HTML(HyperTextMark-upLanguage)是一种制作万维网页面的标准语言,是万维网浏... 查看详情
asp.net中普通超链接如何触发c#事件
普通超链接也就是<a></a>标签如何触发C#中的某一事件呢,这个超链接我是使用第三方控件在页面的onLoad事件来生成的,所以就无法触发C#事件了,我是初学者,请高手们指教!~朋友们的回复都很好,可以实现,学习了。... 查看详情
js模拟a标签打开新网页
var el = document.createElement("a");document.body.appendChild(el);el.href = url; //url 是你得到的连接el.target = ‘_new‘; //指定在新窗口打开el.click();document.body. 查看详情
jquery如何给多项添加click事件?
...;aid="x2"title="..."></a>...</div> 如何给div内所有的a标签添加事件参数为自身的title$(\'diva[title=...]\').click(function()//事件函数);//jquery可以使用css的选择符;返回的是包含a元素的集合,click是该集合的一个方... 查看详情
如何在javascript中捕获新标签事件中的打开链接?
】如何在javascript中捕获新标签事件中的打开链接?【英文标题】:howtocapturetheopenlinkinnewtabeventinjavascript?【发布时间】:2018-04-0821:54:54【问题描述】:我能够捕获右键单击事件,但我想知道的是如何捕获右键单击后发生的“在新... 查看详情
jquery如何给ul下每个li都加上点击事件
ullili...ul每个li都加上同一个click事件,li个数未知小白问题,请赐教输入$('ulli').click(function()//TODO);利用jQuery动态获取点击事件:打开HBuilder开发工具,创建Web项目,并在web项目指定目录下新建静态页面,引入核心js,插入可... 查看详情
jquery模拟点击页面上的所有a标签,触发onclick事件(代码片段)
注意:这种方法需要给所有的a标签加上id属性<script>$(function()//模拟点击页面上的所有a标签,触发onclick事件$("a").each(function()document.getElementById(this.id).click();))</script> 查看详情
jquery模拟鼠标点击动作
...t;).click(function()aaaaaa)$("#b").click(function()xxxxxx))请问如何点击b的时候触发#a的点击事件?除了把a的事件写到一个函数里通过调用的方法,jquery有模拟点击动作的事件不参考技术Atrigger(type,[data])在每一个匹配的元素上触发某... 查看详情
用jquery点击a标签怎么做?
...式无法完成:golist.click();//是不是jquery不支持a标签的click事件?该怎么改?a标签里面有一个默认的属性叫做href点击之后会跳转到指定的地址中解决方法1:去除a标签中href属性直接<aid="show">点击</a>$("#show").... 查看详情
php超链接标签事件都有哪些
参考技术A:click事件、:dbclick事件、:mousedown事件、:mouseup事件。1、click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发。2、dbclick事件在用户完成迅速连续的两次点击之后触发,双击的速度取决于操作系统的设置... 查看详情
前端用jquery如何去获取一个dom未渲染的标签添加点击事件
参考技术A给要点击的dom加个id或者class,例如叫click-dom然后$('#click-dom').on('click',function()//点击后要做的操作) 查看详情
如何使用javascript和jquery中的<a>标签在新标签中打开链接[重复]
】如何使用javascript和jquery中的<a>标签在新标签中打开链接[重复]【英文标题】:Howtoopenalinkinnewtabusing<a>taginjavascriptandjquery[duplicate]【发布时间】:2014-11-2103:58:01【问题描述】:我想使用标签在新标签中打开一个链接,它... 查看详情
a标签与click的关系
...器a标签的时候,浏览器的默认机制如下:1、触发a的click事件2、读取href属性的值3、如果是URI则跳转4、如果是javascript代码则执行该代码下面我们一起来做一个实验:我们在一个html页面中写下如下代码:1<ahref="http://www.baidu.com"i... 查看详情
关于浏览器新窗口打开被拦截的解决方法
...生); 例如:juqerytrigger("click"),只有在a标签绑定click事件才会触发。而a标签原生的click()有触发按钮的意思。我们在这里利用的就是这个。所以在这里的trgger("click")是无效的 $(document).on("click",function(){ setTimeout(funct... 查看详情