GM_setClipboard(以及其他GM功能)在Firefox中出错但不在Chrome / Tampermonkey中出错?

时间:2016-02-23 11:36:34

标签: javascript jquery greasemonkey tampermonkey

我正在使用Firefox并尝试创建一个函数,当我按 Shift + *(Numpad)时,该函数将复制链接的文本。

该代码通常在Chrome Tampermonkey中运行,但由于某种原因,它在Firefox中无效 控制台中报告以下错误:

  

“ReferenceError:未定义GM_setClipboard”

这是我的代码:

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
    }
});

2 个答案:

答案 0 :(得分:5)

Greasemonkey requires explicit @grant statements使用GM_个功能。而Tampermonkey仍然会进行一些自动检测(潜在的安全漏洞)。

所以:

  1. 您需要在metadata block中指定// @grant GM_setClipboard

  2. 但是,这会重新打开沙盒(这是一件好事),所以你还需要确保{j} {j}。

  3. 此脚本适用于Greasemonkey和Tampermonkey:

    @require

答案 1 :(得分:0)

https://clipboardjs.com/是个不错的选择。

一个很常见的用例是从另一个元素复制内容。您可以通过在触发器元素中添加data-clipboard-target属性来实现。

enter image description here