Как настроить Firefox, чтобы позволить Javascript перехватывать значение, вставленное из буфера обмена?

Мне нужно отфильтровать определенные символы, когда пользователь вставляет их из буфера обмена. (На самом деле я не хочу изменять то, что находится в буфере обмена.) У меня это уже работает в IE. Вздох...

tl;dr:возможность.policyэлементы в user.jsпревращаются в prefs.js, но не вступают в силу.

К вашему сведению, все пользователи могут установить user.js. Но ни у кого из нас нет доступа администратора к нашим машинам, так что это все, что я могу сделать в отношении конфигурации.

Спасибо за любую помощь!

Примечание:

  1. Для целей этого вопроса я не хочу "обходить" доступ к буферу обмена --
    Например, я не хочу оперировать значением элемента DOM послепроисходит вставка
  2. Мне не нужно решение, для которого требуется фреймворк/библиотека(например, jQuery, Dojo, Prototype, YUI, ...)

Выполненные шаги

  1. Определено местоположение моей папки профиля, перейдя по URL-адресу about:support=> Каталог профиля => Открыть содержащую папку

  2. Попыткана включить буфер обмена в Firefox, создав user.jsсо следующими строками:
    user_pref("just.mike", "проверьте, работает ли user.js.");
    user_pref("capability.policy.policynames", "allowclipboard");
    user_pref("capability.policy.allowclipboard.sites", "https://my-site.com");
    user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
    user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");
    
    Примечание: https://my-site.com не является настоящим сайтом.

  3. Как оказалось, элементы ability.policyневидны при использовании about:config-- из-за ошибки Bugzilla 284673 -- about :config скрывает настройки «capability.policy». Однако я думаю, что эти элементы user.js«сработали» и что файл находится в правильной папке, потому что впоследствии:
    • about:configпоказал запись just.mike
    • прив.jsсодержал все новые строки , но в другом порядке— в алфавитном порядке:
      user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
      user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");
      user_pref("capability.policy.allowclipboard.sites", "https://my-site.com");
      user_pref("capability.policy.policynames", "allowclipboard");
       ... 
      user_pref("just.mike", "проверьте, работает ли user.js.");
      
    (К вашему сведению, я также пробовал Zallowclipboardвезде, чтобы строка policynamesшла первой из-за алфавитного алфавита, но это тоже не сработало.)

  4. Попыткапрочитатьбуфер обмена в Firefoxпосле события onpasteсо следующим:
    var буфер обмена = (скрытый)
    если (!буфер обмена) {
    throw new Error('внутренняя ошибка -- не удалось создать объект буфера обмена');
    }
    var передаваемый = (скрытый)
    если (!переносимый) {
    throw new Error('внутренняя ошибка -- не удалось создать передаваемый объект');
    }
    transferable.addDataFlavor("текст/Юникод");
    clipboard.getData(переносимый, clipboard.kGlobalClipboard);
    var clipboard_data = новый объект();
    var clipboard_length = новый объект();
    transferable.getTransferData("текст/юникод", clipboard_data, clipboard_length);
    вар clipboard_text = '';
    если (!!clipboard_data) {
    var clipboard_nsISupportsString = clipboard_data.value.QueryInterface(Components.interfaces.nsISupportsString);
    clipboard_text = clipboard_nsISupportsString.data.substring(0, clipboard_length.значение / 2);
    }
    возврат (текст буфера обмена);
    

  5. Ошибка кода в первой строке .возвращая эту ошибку в консоли Firebug:
    Отказано в доступе для  для получения свойства XPCComponents.classes
    
    Примечание. На самом деле я запускаю его по реальному URL-адресу, который отображается в сообщении об ошибке — здесь я только что изменил его на фиктивное имя.

  6. Я также видел несколькодругих примеров, где createInstanceиспользовалось в первой строке вместо getService, но перваястрока по-прежнему генерирует тот же текст ошибки:
    var буфер обмена = (скрытый)
    // ...
    


Окружающая среда(Это вне моего контроля)

  • Нет доступа администратора к компьютеру
  • Windows Vista
  • Мозилла Фаерфокс 10

Ссылки

14
задан Community 23 May 2017 в 12:34
поделиться