通过Tampermonkey打开新标签中的点击链接的方法?

the*_*ula 4 javascript jquery tabs google-chrome tampermonkey

所以我有一个似乎是一个简单的问题.我正在尝试使用以下代码自动打开页面上的特定链接:

// ==UserScript==
// @name     AutoClicker
// @include  https://example.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==

var TargetLink = $("a:contains('cars')")

if (TargetLink.length)
    window.location.href = TargetLink[0].href

//--- but open it in a new tab
Run Code Online (Sandbox Code Playgroud)

哪个效果很好.

唯一的问题是我不知道在新标签页中打开所选链接的方法.我尝试过以下代码的迭代,但无济于事:

var TargetLink = $("a:contains('cars,' '_blank')")
Run Code Online (Sandbox Code Playgroud)

我知道我需要使用_blank,但我不确定我应该在jQuery中编写它的确切位置.我也尝试将_blank放在contains之外,但我不确定如何在jQuery中编写代码.

我只是想在单击时在新标签页中打开所选链接.有什么建议或想法?

Bro*_*ams 6

问题不明确,提出了两个不同的问题. 您是否希望打开选项卡而不进行用户交互?

如果是, Tampermonkey具有以下功能: GM_openInTab()Doc.

所以:

// ==UserScript==
// @name     AutoClicker
// @include  https://example.com/*
// @require  https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant    GM_openInTab
// ==/UserScript==

var TargetLink = $("a:contains('cars')");

if (TargetLink.length)
    GM_openInTab (TargetLink[0].href);
Run Code Online (Sandbox Code Playgroud)

如果没有,使用jQuery的attr()Doc也很容易.

所以:

// ==UserScript==
// @name     NOT an AutoClicker, per question text
// @include  https://example.com/*
// @require  https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==

var TargetLink = $("a:contains('cars')");

if (TargetLink.length)
    TargetLink.attr ('target', '_blank');
Run Code Online (Sandbox Code Playgroud)

对于javascript驱动的页面(也适用于静态页面):

// ==UserScript==
// @name     NOT an AutoClicker, per question text
// @match    *://YOUR_SERVER.COM/YOUR_PATH/*
// @require  https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// @grant    GM.getValue
// ==/UserScript==
//- The @grant directives are needed to restore the proper sandbox.

waitForKeyElements ("a:contains('cars')", blankifyLink);

function blankifyLink (jNode) {
    jNode.attr ('target', '_blank');
}
Run Code Online (Sandbox Code Playgroud)