铬 | TamperMonkey 脚本 - 在新选项卡中打开所有链接

我需要自动打开每个链接新标签的所有搜索结果。我尝试了从 here 中找到的以下脚本。我无法达到预期的结果。我对脚本完全陌生,可以帮助我修复或指导我完成结果。

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

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

if (TargetLink.length)
    GM_openInTab (TargetLink[0].href);

错误 1

Error 1

错误 2

Error 2

stack overflow Chrome | TamperMonkey script - Open all links in new tab
原文答案

答案:

作者头像

我很久以前就写了这个脚本,告诉我它是否有效。

// ==UserScript==
// @name         Open All Links in New Tab
// @namespace    http://tampermonkey.net/
// @version      3.5.6
// @author       Firey Chicken
// @match        *
// @match https://*/*
// @match http://*/*
// @match *//*/*
// @grant       GM_addStyle
// @grant        window.close
// @require      http://code.jquery.com/jquery-3.4.1.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
})();
var $ = window.jQuery;
$(document).on('click', 'a', function(e){
    e.preventDefault();
    var url = $(this).attr('href');
    window.open(url, '_blank');
});
作者头像

您需要声明全局值 - 基本上,您在元数据下方添加这样的行以防止 Tampermonkey 编辑器(使用 ESLint)显示错误 - Source ,例如:

/* globals $ */

如果要打开多个项目,则必须遍历查询。使用 targetLink 你指向例如6个对象。循环的使用几乎是必要的。

所以最后的结果是:

// ==UserScript==
// @name        AutoClicker
// @match       https://www.google.com/*
// @description Example
// @version     0.0
// @require     https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant       GM_openInTab
// ==/UserScript==

/* globals $ */
(function() {
    'use strict';

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

    for ( let i = 0; i < TargetLink.length; i++ )
    {
        GM_openInTab (TargetLink[i].href);
    }
})();