Использование одного и того же пользовательского скрипта для запуска другого кода на разных 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)
,