GM_setClipboard(和其他 GM 函数)在 Firefox 中给出错误但在 Chrome/Tampermonkey 中没有?
GM_setClipboard (and other GM functions) gives an error in a Firefox but not Chrome/Tampermonkey?
我在 Firefox 中工作并尝试创建一个函数,当我按下 Shift+* 时将复制 link 的文本(数字键).
该代码通常在 Chrome Tampermonkey 中工作,但由于某种原因它在 Firefox 中什么都不做。
控制台报如下错误:
"ReferenceError: GM_setClipboard is not defined"
这是我的代码:
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
d 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
}
} );
https://clipboardjs.com/是个不错的选择。
一个非常常见的用例是从另一个元素复制内容。您可以通过在触发器元素中添加 data-clipboard-target 属性来实现。
我在 Firefox 中工作并尝试创建一个函数,当我按下 Shift+* 时将复制 link 的文本(数字键).
该代码通常在 Chrome Tampermonkey 中工作,但由于某种原因它在 Firefox 中什么都不做。
控制台报如下错误:
"ReferenceError: GM_setClipboard is not defined"
这是我的代码:
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
d 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
}
} );
https://clipboardjs.com/是个不错的选择。
一个非常常见的用例是从另一个元素复制内容。您可以通过在触发器元素中添加 data-clipboard-target 属性来实现。