【问题标题】:How do I programmatically click a link with javascript?如何以编程方式单击带有 javascript 的链接?
【发布时间】:2010-10-28 12:17:24
【问题描述】:

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

【问题讨论】:

  • 您只能在 input type="button" 元素上执行“点击”。
  • @Ballsacian1 我在<a> 元素上使用了.click(),它起作用了。

标签: javascript hyperlink click anchor


【解决方案1】:
document.getElementById('yourLinkID').click();

【讨论】:

  • 实际上,到目前为止,它在我尝试过的所有浏览器中都可以使用,包括 IE、Safari、Chrome、Firefox 和 Opera。
  • 注意,如果链接有target="_blank"属性,浏览器的弹窗拦截器会为新窗口激活。
【解决方案2】:

此功能至少在 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;
    }
}

【讨论】:

【解决方案3】:

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

location.href = "http://www.example.com/test";

【讨论】:

  • 投了反对票,因为我不喜欢围绕用例回答而不是解决它的答案。 “我认为这是你的意图,我不知道你的限制,所以在概念真空中的概念领域:使用这个。”
  • 我投了赞成票,因为我正在寻找一些不错的解决方案来单击 userjs 脚本中的 mailto: 链接。绝对节省了我的时间。我准备创建a 元素并进行一些“程序化点击”stackoverflow.com/questions/809057/…
  • 我也试过调用click()在其他地方和上面提出的方法,它在IE9中不起作用,但设置location.href实际上是从mailto:链接发送电子邮件。很好的解决方案!
  • 这个方法在 PyQT4 中很有帮助。 click() 调用对我不起作用。谢谢!
  • 没有解决我想点击链接的问题中的用例。该链接无处可去,但还有其他与点击事件相关的事情。我不想改变位置。
【解决方案4】:

就这样:

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

或在页面加载时:

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

【讨论】:

  • 是的,但随后必须进行其他点击。
  • 你不能在任何事件上都这样做吗,比如页面加载?
  • 感谢您的帮助,但我使用的是 firefox 3,但它不起作用,在错误控制台中显示 Error: document.getElementById("myLink").click is not a function
  • firefox好像不支持click方法。大多数答案,包括我的,都没有帮助:)
  • @Canavar:尝试点击而不是点击
【解决方案5】:

点击链接的jQuery方式是

$('#LinkID').click();

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

$('#LinkID')[0].click();

【讨论】:

  • 这不起作用。这不是他所问问题的答案。如果我有更多的点,我会对此给出否定的。
  • 这不起作用?你试过了吗?我希望您了解“LinkID”的含义。如果现在有人在没有 jQuery 的情况下落后于 js,我会感到非常惊讶。无论如何,在获得一些积分后随意投反对票
  • 我试过了,但 mailTo 链接在 React Native 中不起作用。使用这个:window.location.href = "mailto:address@gmail.com";
  • 点击a 链接对我也不起作用。使用[0].click() 版本有效,我相信这与document.getElementById('yourLinkID').click(); 答案相同。
  • Firefox 浏览器:这适用于 但不适用于
【解决方案6】:

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

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

【讨论】:

  • 显示代码中存在语法错误。缺少一两个右大括号。我通过编辑添加了它们。
【解决方案7】:

上述许多方法已被弃用。现在推荐使用here找到的构造函数

function clickAnchorTag() {
    var event = document.createEvent('MouseEvent');
    event = new CustomEvent('click');
    var a = document.getElementById('nameOfID');
    a.dispatchEvent(event);
}

这将导致锚标记被点击,但它不会显示弹出窗口阻止程序是否处于活动状态,因此用户需要允许弹出窗口。

【讨论】:

  • 我不明白为什么要设置两次事件。我看不到 event = new CustomEvent('click');是参考事件,那么 var ... 的意义何在...
  • 我认为你是正确的 historystamp。他正在创建一个鼠标事件,然后立即用一个新事件覆盖它。
【解决方案8】:

您能否使用 Javascript 转发到点击将转到的 URL,而不是单击?

也许您可以在主体 onLoad 中放一些东西,以便去您想去的地方。

【讨论】:

  • 我发布了这两个问题,因为人们在处理“a tag”链接时不会自然地查找按钮信息。它们在技术上是无关的。
【解决方案9】:

您可以将它们重定向到另一个页面。实际上,让它真正点击一个链接并前往它似乎是不必要的,但我不知道整个故事。

【讨论】:

  • 就我而言,我不知道链接是否有目标“_blank”,所以我不知道应该使用 location.href 还是 window.open。发送点击的时间更短。有一些用例,例如你可能想要触发一个事件,比如打开一个模态框。
【解决方案10】:

对于那些想要点击具有特定文本内容的所有链接的人来说,这是可行的:

for (const a of document.querySelectorAll("a")) {
  if (a.textContent.includes("<your text to be searched here>")) {
    a.click();
  }
}

参考:https://stackoverflow.com/a/42907920/2361131

【讨论】:

    【解决方案11】:

    客户端JS功能,当...时自动点击链接

    这是一个示例,您检查隐藏表单输入的值,其中包含从服务器传递的错误。您的客户端 JS 然后检查它的值并在您指定的另一个位置填充错误。 .在这种情况下是一个弹出登录模式。

    var signUperror = document.getElementById('handleError')
    
    if (signUperror) {
      if(signUperror.innerHTML != ""){
      var clicker = function(){
        document.getElementById('signup').click()
      }
      clicker()
      }
    }
    

    【讨论】:

      【解决方案12】:

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

      您可以做的是点击身体负荷。 W3Schools 有一个例子here.

      【讨论】:

      • @Neolit 在获得 404 之前它是一个错误的链接。没有损失。
      猜你喜欢
      • 2016-08-07
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2015-10-19
      • 2010-10-16
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多