Конфигурационные файлы в скрипте Greasemonkey - PullRequest
3 голосов
/ 09 мая 2011

Из того, что я понял, невозможно читать файлы с помощью Greasemonkey.Мне нужно определить множество статических файлов конфигурации, и кажется, что включать файлы непосредственно в пользовательский сценарий совершенно беспорядочно.

Итак, как лучше всего хранить и извлекать эти данные?

Ответы [ 3 ]

5 голосов
/ 10 мая 2011

Да, Из-за этого невозможно прочитать локальные файлы .

Если все ваши файлы представляют собой текстовую страницу или около того и не меняются так часто,продолжайте и используйте GM_getResourceText(), согласно ответу Dr.Molle.

Если ваши файлы имеют большой размер или быстро меняются, разместите их на сервере и используйте GM_xmlhttpRequest() для чтения необходимого файла во время выполнения.См. Пункт 2 ниже.


  1. Использование GM_getResourceText() - самый простой и быстрый способ продолжить.И, если файлы конфигурации имеют разумный размер (скажем, в среднем менее 1 КБ), этот метод, вероятно, будет быстрее, чем методы, использующие Ajax - даже с 150 (!!!) файлами.

    Недостаток:Вам нужно будет добавить в закладки неловкий путь и запомнить его, когда вы захотите отредактировать файл конфигурации.(EG: C:\Documents and Settings\<Windows login/user name>\Application Data\Mozilla\Firefox\Profiles\<profile folder>\gm_scripts\YOUR_SCRIPT_NAME\)

  2. Если вы действительно не можете - или не хотите - использовать кучу относительно статичных файлов, лучшим выбором будет размещениеКонфигурационные файлы на вашем сервере и GM_xmlhttpRequest() прочитайте нужный файл при запуске скрипта.

    Если у вас нет собственного сервера, вы можете разместить файлы где-нибудь, например, Google Docs .

  3. Использование GM_getValue() или использование globalStorage или локального хранилища могут быть очень быстрыми и эффективными при получении данные вашего файла конфигурации (и только те данные, которые вы хотите).Но хранение данных может быть серьезной болью, если вы не напишите свои собственные инструменты для этого (тоже боль, но другие сделали это ).

  4. Использование @require не дает никаких преимуществ перед GM_getResourceText(), если ваши конфигурационные файлы не являются действительно допустимым кодом JavaScript.И этот метод потребует от вас удаления, а затем переустановки сценария каждый раз, когда меняется имя включаемого файла - или если вы добавляете или удаляете файлы.
    Не рекомендуется.

2 голосов
/ 09 мая 2011

Вы можете загрузить ресурс: http://wiki.greasespot.net/GM_getResourceText

0 голосов
/ 09 мая 2011

Или вы можете загрузить его автоматически, используя @ require

...