如何模拟click事件,打开一个a标签链接?

js-coder js-coder     2022-09-12     146

关键词:

在项目开发过程中,我们经常会碰到通过接口返回一个地址,同时在新的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>被点击。

jsfiddle代码地址

方式二:HTMLElement.click()

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

按照文档里面的介绍,HTMLElement.click()是用来模拟click的方法。这种方法的兼容性如下。

PC

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (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

FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support No support ? (Yes) ? ? ? ?

 

jsfiddle代码地址

方式三:createEvent + initEvent + dispatchEvent

document.createEvent用于创建事件,在DOM Level 2 的事件中就有HTMLEvents,MouseEvents,UIEvents事件类型。

initEvent()方法用于初始化通过DocumentEvent接口创建的Event的值。

dispatchEvent则是触发对应元素上面的某个事件。

参考自stackoverflow

jsfiddle代码地址

方式四:后端重定向

这种方式需要后端协作,先提供一个接口地址,前端通过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... 查看详情