Использование одного и того же пользовательского скрипта для запуска другого кода на разных URL

Я знаю, что можно запустить скрипт на разных URL, добавив @include заявления, но можно ли запустить разные наборы кода на основе URL?

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

1 ответ

Решение

Чтобы переключить, какой код выполняется для каждого URL, используйте if() или же switch() заявления против части местоположения объектаДок.

Чтобы избежать ложных срабатываний и побочных эффектов, лучше всего протестировать это свойство, которое является наиболее различающим (обычно hostname и / или pathname).

Например, для скрипта, работающего на разных сайтах:

if (/alice\.com/.test (location.hostname) ) {
    // Run code for alice.com
}
else if (/bob\.com/.test (location.hostname) ) {
    // Run code for bob.com
}
else {
    // Run fall-back code, if any
}

// Run code for all sites here.


Или, для одного сайта, разные страницы:

if (/\/comment\/edit/.test (location.pathname) ) {
    // Run code for edit pages
}
else if (/\/comment\/delete/.test (location.pathname) ) {
    // Run code for delete pages
}
else {
    // Run fall-back code, if any
}

// Run code for all pages here.


Обратите внимание на использование побега \,
.test() используется для удивительной силы регулярных выражений. Например,
/(alice|bob)\.com/.test (location.hostname),

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