我正在Firefox中工作,并尝试创建一个在按Shift + *(数字键)时将复制链接文本的功能。

该代码通常可以在Chrome Tampermonkey中使用,但是由于某些原因,它在Firefox中什么也不做。
控制台中报告了以下错误:



这是我的代码:

document.addEventListener( "keydown", function(i) {
    var selectLink = $('a').eq(8); // The link by index
    var targetLink = selectLink.text(); // The link text

    if (i.keyCode === 106 && i.shiftKey) // Shift+Num*
    {
        GM_setClipboard(targetLink); // Copy to clipboard
    }
});

最佳答案

Greasemonkey requires explicit @grant statements使用GM_函数。而Tampermonkey仍会进行一些自动检测(潜在的安全漏洞)。
所以:

  • 您需要在metadata block中指定// @grant GM_setClipboard
  • 但是,这会重新打开沙箱(一件好事),因此您还需要确保已使用@require和jQuery。

  • 该脚本可在Greasemonkey和Tampermonkey中使用:
    // ==UserScript==
    // @name     _YOUR_SCRIPT_NAME
    // @match    http://YOUR_SERVER.COM/YOUR_PATH/*
    // @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
    // @grant    GM.setClipboard
    // ==/UserScript==
    
    document.addEventListener ( "keydown", function (i) {
        var selectLink = $('a').eq (8); // The link by index
        var targetLink = selectLink.text ().trim (); // The link text
    
        if (i.keyCode === 106  &&  i.shiftKey) // Shift+Num*
        {
            GM.setClipboard (targetLink); // Copy to clipboard
        }
    } );
    

    09-27 01:08