Измените GM_setValue и GM_getValue для связи между вкладками: как получить доступ к переменным настроек Firefox? - PullRequest
2 голосов
/ 18 мая 2011

У меня новая проблема, связанная с моим пользовательским скриптом GM.

Цель этого скрипта - получить данные из внешнего домена. Мои первые попытки в Firefox привели меня к дизайну страницы с заполнением моей формы и вставкой в ​​iframe внешней страницы. Используя setInterval и определяя, находится ли это верхнее окно, или, если мы находимся в iframe, я успешно использовал GM_setValue и GM_getValue для получения данных.

Но с IE (IE7PRO) я обнаружил, что смог разделить свой сценарий на 2 сценария: один касается только формы, а другой - внешнего домена. IE7PRO предоставляет эквивалентные функции (PRO_getValue и PRO_setValue), которые можно получить на любой вкладке / странице продукта. Единственное отличие состоит в том, что он работает с кросс-таблицей / страницей, поэтому мне не нужно включать iframe на своей странице, и я могу открыть собственную вкладку для внешнего домена, которая примерно в миллион раз лучше (по крайней мере ..!)

Я попробовал то же самое на Firefox, и это, очевидно, не сработало. Я ознакомился с документацией этих функций , и похоже, что в Firefox данные хранятся в настройках (about: config to access).

Итак, есть ли способ изменить GM_getValue, добавить его параметры, поскольку значения хранятся в этой модели: greasemonkey.scriptvals.namespace/script_name.value_name

Есть ли способ получить доступ к значению предпочтения в Firefox, в скрипте пользователя Greasemonkey / в Javascript и каков синтаксис?

Спасибо; -)

Ответы [ 2 ]

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

Если я правильно понял ваш вопрос, вы в значительной степени сделали бы то же, что уже делали в IE: пользовательский скрипт выполнялся на каждой вкладке.

GM_[gs]etValue do Работа кросс-таблицы и кросс-страницы.Значения хранятся для каждого пользовательского сценария .

Так что все, что вам нужно сделать, - это запустить один и тот же пользовательский скрипт на обеих вкладках и просто заставить его выполнять разные действия на основепроверьте window.location.href.

1 голос
/ 19 мая 2011

В настоящее время единственным способом является создание одного скрипта, который запускается на обеих страницах.Вы можете дифференцировать их, добавив оператор if, как упоминалось ранее Wimmel.Однако вы можете рассмотреть возможность добавления ваших данных в глобальную область с использованием unsafeWindow и разделения кода на 2 сценария, но порядок выполнения обоих сценариев повлияет на результат.

...