代码之家  ›  专栏  ›  技术社区  ›  theCrabNebula

如何通过Tampermonkey打开新标签中的点击链接?

  •  4
  • theCrabNebula  · 技术社区  · 6 年前

    所以我有一个看起来很简单的问题。我正在尝试使用以下代码自动打开页面上的特定链接:

    // ==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
    

    工作出色。

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

    我知道我需要用 _blank ,但我不确定到底应该在哪里或是否应该在jQuery中编写它。我也试过在contains之外放置空白,但我不确定如何在jQuery中编写代码。

    我只希望所选链接在新选项卡中打开 被点击时 . 有什么建议或想法吗?

    1 回复  |  直到 6 年前
        1
  •  6
  •   Brock Adams    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);
    

    如果不是, 这也很简单 jQuery's 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');
    

    对于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');
    }