繁体   English   中英

模拟jQuery / JavaScript中的链接点击

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM