如何以编程方式单击带有javascript的链接?

163 javascript anchor click hyperlink

有没有办法使用JavaScript点击我页面上的链接?

ari*_*rik 225

document.getElementById('yourLinkID').click();
Run Code Online (Sandbox Code Playgroud)

  • 实际上,到目前为止,它在我尝试的所有浏览器中都有效,包括IE,Safari,Chrome,Firefox和Opera. (17认同)
  • 请注意,如果链接具有`target =“ _ blank”`属性,则将为新窗口激活浏览器的弹出窗口阻止程序。 (4认同)

Mat*_*ley 45

此功能至少适用于Firefox和Internet Explorer.它运行附加到链接的任何事件处理程序,并在事件处理程序未取消默认操作时加载链接的页面.

function clickLink(link) {
    var cancelled = false;

    if (document.createEvent) {
        var event = document.createEvent("MouseEvents");
        event.initMouseEvent("click", true, true, window,
            0, 0, 0, 0, 0,
            false, false, false, false,
            0, null);
        cancelled = !link.dispatchEvent(event);
    }
    else if (link.fireEvent) {
        cancelled = !link.fireEvent("onclick");
    }

    if (!cancelled) {
        window.location = link.href;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 马修是正确的,http://stackoverflow.com/questions/809057/how-do-i-programmatically-click-on-an-element-in-firefox有更多关于原因的信息.跨浏览器很有趣:) (5认同)
  • 它不尊重`target`属性或`<base target ="frame">` (4认同)
  • 在Chrome中也能很好地运行.谢谢! (3认同)

Fab*_*ger 38

如果您只想更改当前页面地址,只需在Javascript中执行此操作即可:

location.href = "http://www.example.com/test";
Run Code Online (Sandbox Code Playgroud)

  • 投票,因为我不喜欢回答用例而不是解决它的问题."我认为这是你的意图,我不知道你的约束,所以在概念真空中使用概念领域:使用它." (49认同)
  • 我投票了,因为我正在寻找一个很好的解决方案,点击userjs脚本中的`mailto:`链接.绝对节省了我的时间.我准备创建`a`元素并制作一些"程序化点击"http://stackoverflow.com/questions/809057/how-do-i-programmatically-click-on-an-element-in-firefox (11认同)
  • 我也试过调用在其他地方和上面提出的`click()`方法,它在IE9中不起作用,但设置`location.href`实际上是从`mailto:`链接发送了电子邮件.好方案! (6认同)

Can*_*var 14

就像那样:

<a id="myLink" onclick="alert('link click');">LINK 1</a>
<a id="myLink2" onclick="document.getElementById('myLink').click()">Click link 1</a>
Run Code Online (Sandbox Code Playgroud)

或在页面加载时:

<body onload="document.getElementById('myLink').click()">
...
<a id="myLink" onclick="alert('link click');">LINK 1</a>
...
</body>
Run Code Online (Sandbox Code Playgroud)

  • 是的,但随后必须进行一些其他单击。 (2认同)
  • 您无法在任何事件(例如页面加载)上执行此操作吗? (2认同)
  • 是的,您是对的,我以为他是在点击其他链接时要求的。 (2认同)
  • 感谢您的帮助,但是即时通讯使用firefox 3却无法正常工作,在错误控制台中显示错误:document.getElementById(“ myLink”)。click不是一个函数 (2认同)
  • 但是点击链接就可以了,只是.click不起作用 (2认同)

Muh*_*bal 9

点击链接的jQuery方式是

$('#LinkID').click();
Run Code Online (Sandbox Code Playgroud)

对于mailTo链接,您必须编写以下代码

$('#LinkID')[0].click();
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说对点击"a"链接不起作用.使用`[0] .click()`版本,我认为它与`document.getElementById('yourLinkID')相同.单击();`回答. (4认同)
  • 我试过这个,并且mailTo链接在React Native中不起作用.使用此:window.location.href ="mailto:address@gmail.com"; (3认同)
  • 这是行不通的。这不是他问的问题的答案。如果我还有其他观点,我对此会否定。 (2认同)
  • 这行不通吗?您尝试过了吗?希望您理解“ LinkID”的含义。如果如今某人对没有jQuery的js足够落后,我真的会感到惊讶。无论如何,在获得积分后可以随意投票 (2认同)

小智 6

对我来说,我设法让它以这种方式工作。我在 5000 毫秒内部署了自动点击,然后在 1000 毫秒后关闭了循环。然后只有 1 次自动点击。

<script> var myVar = setInterval(function ({document.getElementById("test").click();}, 500)); setInterval(function () {clearInterval(myVar)}, 1000));</script>
Run Code Online (Sandbox Code Playgroud)


Óla*_*age -6

你不能让用户的鼠标做任何事情。但您可以完全控制事件触发时发生的情况。

您可以做的就是点击身体负荷。W3Schools 这里有一个例子

  • @Neolit 无论如何,在它被 404 之前它是一个坏链接。没有损失。 (6认同)