【问题标题】:How to copy data to the clipboard with Greasemonkey?如何使用 Greasemonkey 将数据复制到剪贴板?
【发布时间】:2012-10-16 01:16:37
【问题描述】:

我找到了this question,但尝试使用那里给出的代码:

unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper)
;
clipboardHelper.copyString('test');


给出错误信息:

来自 «http://example.com» 的脚本被拒绝 UniversalXPConnect 特权。



我也试过用(from Mozilla site):

const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper)
;
gClipboardHelper.copyString("test2");

其中给出了错误消息:Components.classes is undefined

在这两种情况下,它都不适用于 Windows 7 上最新的 Firefox。
我还应该尝试什么?

【问题讨论】:

    标签: javascript firefox greasemonkey clipboard clipboard-interaction


    【解决方案1】:

    更新:

    从 1.10 版(2013 年 6 月 20 日)开始,Greasemonkey 现在支持the GM_setClipboard() function
    像这样使用:

    // ==UserScript==
    // @name     _YOUR_SCRIPT_NAME
    // @include  http://YOUR_SERVER.COM/YOUR_PATH/*
    // @grant    GM_setClipboard
    // ==/UserScript==
    
    GM_setClipboard ("The clipboard now contains this sentence.");
    


    较旧的 GM 版本:

    这对于 Greasemonkey 来说很难做到,因为 GM 开发人员拒绝支持它,并且必须克服 FF 和 Flash 安全设置。
    如果复制将通过手动点击 启动,您可以执行此操作。在这种情况下,请使用this question 中的一种技术。

    如果您希望进行某种全自动剪贴板操作,那么您必须开发自己的插件或插件供您的 GM 脚本使用。


    Scriptish 多年来一直支持这一点:

    如果您愿意切换脚本插件,请注意Scriptish 提供GM_setClipboard() to set the clipboard。 (但没有读取它的功能?!)

    Scriptish 并不完美,但在某些方面它比 Greasemonkey 更好。 (请注意,我不隶属于任何一个附加组件,也不完全满意。)

    大多数 GM 脚本可以毫无问题地以 Scriptish 运行。


    至于代码sn-ps,来自问题;它们本质上是一样的(第一个只占 GM 沙箱)。对于许多版本的 Firefox,这种方法已经过时,并且替换代码的文档记录很差。
    您必须使用需要用户交互的技术,或者您必须编写自定义助手插件。

    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 2017-10-03
    • 1970-01-01
    相关资源
    最近更新 更多