【问题标题】:Way to Open Clicked Link in New Tab via Tampermonkey?如何通过 Tampermonkey 在新选项卡中打开单击的链接?
【发布时间】:2019-01-11 21:50:54
【问题描述】:

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

// ==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 编写它。我也尝试将 _blank 放在包含之外,但我不确定如何在 jQuery 中编写代码。

我只是希望所选链接在点击后在新标签页中打开。有什么建议或想法吗?

【问题讨论】:

    标签: javascript jquery google-chrome tabs tampermonkey


    【解决方案1】:

    问题不清楚,问了两个不同的东西。 您是否希望标签在没有用户交互的情况下打开?

    如果是, 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');
    }
    

    【讨论】:

    • 第一个在我添加 // @grant GM_openInTab 后效果很好。谢谢!现在,这听起来可能很具体,但是有没有办法关闭打开的选项卡?就像我现在希望它打开,然后在打开后关闭。
    • @theCrabNebula,这是一个新问题。将此问答标记为已接受,然后为此打开一个新问题。
    猜你喜欢
    • 2016-01-15
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多