Включая Greasemonkey script через несколько доменов
Это немного странный вопрос.
Я пишу Greasemonkey script, который будет работать через десять доменов. Все веб-сайты имеют одинаковые структуры, но имя домена для каждого отличается. Например, script будет работать:
http://first-domain.com/
http://another-one.com/
http://you-get-the-point.com/
Мне также нужно, чтобы он запускался на других страницах через одни и те же домены, поэтому список только для одного из этих доменов был бы таким:
http://first-domain.com/admin/edit/*
http://first-domain.com/blog/*
http://first-domain.com/user/*/history
Очевидно, что если я включаю эти три пути для всех десяти доменов, то 30 URL-адресов, которые мне нужно указать как @include
s.
Так что мне интересно, есть ли способ сделать что-то вроде:
// Obviously fake code:
var list_of_sites = ["first-domain", "another-one", "you-get-the-point"];
@include http:// + list_of_sites[any] + .com/admin/edit/*
@include http:// + list_of_sites[any] + .com/blog/*
@include http:// + list_of_sites[any] + .com/user/*/history
Если возможно что-то подобное, он сократит список @include
от 30 до 3.
Так возможно ли это, или мне снится?
PS Я знаю, что могу просто @include http://first-domain.com/*
, а затем использовать операторы if
для запуска определенных частей script по определенным путям внутри этого домена, но количество страниц, которые script предназначен для работы только около 2% сайта, поэтому представляется бесполезным включать script на каждую страницу каждого веб-сайта.
Ответы
Ответ 1
Ссылка:
Решения, которые работают на Greasemonkey (который является Firefox), могут отличаться от Chrome и Tampermonkey.
Три основных подхода:
-
Используйте 30 различных строк @include
. Хотя это может быть неприятным с точки зрения кодирования с вырезанием и вставкой, это единственный подход, который будет работать одинаково во всех браузерах и который будет иметь лучшую производительность браузера. Другие подходы требуют, чтобы браузер выполнял (более) проверки против возможной посещения каждой страницы или iframe.
-
Используйте регулярное выражение @include
:
@include /^http:\/\/(1stDomain\.com|2ndDomain\.com|3rdDomain\.net|etc.)\/(admin\/edit|blog|user\/.+?\/history)/
Это одна строка и работает достаточно хорошо, но строка может стать неудобной, и это будет работать только с Greasemonkey и Tampermonkey (и, вероятно, с Scriptish).
-
Используйте различные комбинации @match
, @include
и @exclude
. Я упоминаю это как возможность. Это самый эффективный подход к прямому Chrome, но не очень кросс-браузер для такого рода вещей. Для использования подхода Greasemonkey или Tampermonkey 1 или подхода 2.
Я рекомендую вам максимально избегать подстановочных знаков. Они замедляют работу браузера. EG, не используйте что-то вроде @include /^.+ .../
или @include http:/*/*
, если вы можете его избежать.