【问题标题】:Click a link with Javascript when there is no element ID没有元素 ID 时单击带有 Javascript 的链接
【发布时间】:2016-01-02 08:25:06
【问题描述】:

如果这个问题已经在某个地方得到解答,但我找不到我要找的东西,请原谅我。我正在使用 Greasemonkey for Firefox 和 Tampermonkey 在 Chrome 中尝试创建一个 Javascipt 来改变我与网页交互的方式。页面加载后,我想在后台的新标签中自动打开一个链接。每次我加载页面时,此链接都会略有不同。网页中的元素是这样的:

<a href="/cgi/admin/user/ssh_login/*" target="_blank">SSH</a>

带*的部分每次都不一样。

如果该链接没有 elementID 或至少没有 elementName,我如何在页面加载时自动单击该链接?

【问题讨论】:

  • 周围的标记是什么?是否在提供 id 的 div 容器内?
  • 为什么不能给这个链接一个ID? SSH 当您生成链接时,是否有什么阻止您这样做?
  • document.querySelector('a').fireEvent('click') - 我不得不说这看起来很狡猾。在后台打开一个标签并自动点击一个链接?你最好不要用它作恶。
  • @somethinghere 请注意,他们可能不想点击每个&lt;a&gt;,而只想点击其中的内容或href
  • 我现在推荐@Brians 优雅的解决方案 ;-)

标签: javascript jquery hyperlink click greasemonkey


【解决方案1】:
var link = document.querySelector('[href*="/cgi/admin/user/ssh_login/"]');
link.click();

编辑:

在 chrome 的背景标签中打开链接(基于this answer

var link = document.querySelector('[href*="/cgi/admin/user/ssh_login/"]');
var url = link.getAttribute('href');
openNewBackgroundTab(url);

function openNewBackgroundTab(url){
    var a = document.createElement("a");
    a.href = url;
    var evt = document.createEvent("MouseEvents");
    //the tenth parameter of initMouseEvent sets ctrl key
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
                                true, false, false, false, 0, null);
    a.dispatchEvent(evt);
}

【讨论】:

  • @Mr_Green .click() 触发点击事件,而不是定义它的onclick
  • onclick 是一个内联事件监听器。 click() 模拟鼠标点击。
  • 另一个问题,为什么[href*= 不能在这里工作,因为我们知道它只能从那里开始?
  • @Mr_Green 肯定会,*= 只是第一个想到的。
  • @MisterPyrrhuloxia window.onload = function(){ /*code*/ }
【解决方案2】:

如果anchor 的内容总是'SSH',你可以使用;

$("a:contains('SSH')")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2019-08-27
    • 1970-01-01
    • 2015-03-08
    • 2021-03-23
    • 2013-03-30
    相关资源
    最近更新 更多