Как скопировать данные в буфер обмена с помощью Greasemonkey?

Я нашел этот вопрос, но пытаюсь использовать приведенный там код:

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.



Я также пытался использовать ( с сайта Mozilla):

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

Что дает сообщение об ошибке: Components.classes is undefined,

В обоих случаях это не работает с последним Firefox на Windows 7.
Что еще я должен попробовать?

1 ответ

Решение

Обновить:

Начиная с версии 1.10 (20 июня 2013 г.), Greasemonkey теперь поддерживает GM_setClipboard() функция
Используйте вот так:

// ==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 должны быть преодолены.
Вы можете сделать это, если копия будет инициирована нажатием кнопки вручную. В этом случае используйте один из методов из этого вопроса.

Если вы хотите иметь какую-то полностью автоматическую операцию с буфером обмена, вам нужно будет разработать собственное дополнение или плагин для использования в вашем скрипте GM.


Scriptish поддерживает это годами:

Если вы открыты для переключения надстроек сценариев, обратите внимание, что Scriptish предоставляет GM_setClipboard() установить буфер обмена. (Но нет функции читать это?!)

Сценарий не идеален, но он лучше, чем Greasemonkey в нескольких отношениях. (Обратите внимание, что я не связан ни с надстройкой, ни с полностью не доволен).

Большинство сценариев GM будут работать на Scriptish без проблем.


Что касается фрагментов кода, из вопроса; по сути, это одно и то же (первое - это песочница GM). Этот подход устарел для многих версий Firefox, а код замены плохо документирован.
Вам придется использовать методы, которые требуют взаимодействия с пользователем, или вам придется написать собственное дополнение для помощника.

Другие вопросы по тегам