[英]Simulating a click on a link in Javascript/jQuery that yields normal browser behavior
[英]Simulating a click in jQuery/JavaScript on a link
我想使用JavaScript模拟页面上任何链接的点击。 如果该链接具有绑定到其“ onclick”事件的功能(通过我没有任何控制权的任何其他JS),则必须调用该功能,否则该链接应以正常方式运行并打开新页面。
我不确定仅检查“ onclick”处理程序的值是否足够。 我想构建它以便它可以在任何链接元素上使用。
我无法控制使用哪个JS库(不一定是jQuery)或仅使用JavaScript将什么函数绑定到链接的onclick事件。
编辑:在下面的答案的帮助下,似乎可以检查使用jQuery或onclick
属性附加的事件处理程序。 如何检查使用addEventListener
/任何其他JS库附加的事件处理程序,从而使其万无一失?
您可以使用click函数来触发所选元素上的click事件。
例:
$( 'selector for your link' ).click ();
您可以在jQuery 文档中了解各种选择器。
编辑:就像下面的评论者所说的; 这仅适用于jQuery附带的事件,内联或“ element.onclick”样式的事件。 它不适用于addEventListener,如果未定义事件处理程序,它将不会跟随该链接。 您可以使用以下方法解决此问题:
var linkEl = $( 'link selector' );
if ( linkEl.attr ( 'onclick' ) === undefined ) {
document.location = linkEl.attr ( 'href' );
} else {
linkEl.click ();
}
虽然不知道addEventListener。
为什么不只是好的javascript?
$('#element')[0].click()
只是
$("#your_item").trigger("click");
使用.trigger(),您可以模拟多种类型的事件,只需将其作为参数传递即可。
简单! 只需使用jQuery的click函数:
$("#theElement").click();
尝试这个
function submitRequest(buttonId) {
if (document.getElementById(buttonId) == null
|| document.getElementById(buttonId) == undefined) {
return;
}
if (document.getElementById(buttonId).dispatchEvent) {
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
document.getElementById(buttonId).dispatchEvent(e);
} else {
document.getElementById(buttonId).click();
}
}
你可以像这样使用它
submitRequest("target-element-id");
首先,请看这个问题 ,看看如何找到链接是否分配了jQuery处理程序。
下次使用:
$("a").attr("onclick")
查看是否分配了javascript事件。
如果以上任何一项为真,则调用click方法。 如果没有,请获取链接:
$("a").attr("href")
并遵循它。
恐怕我不知道如果使用addEventListener添加事件处理程序该怎么办。 如果您负责整个页面的源代码,请仅使用jQuery事件处理程序。
当您使用Rails远程表单按钮模拟单击时,所有这些可能都无济于事。 我尝试从原型中移植漂亮的事件模拟: 我的代码段 。 做到了,它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.