1

我知道可以通过添加@include语句在不同的 URL 上运行脚本,但是可以根据 URL 运行不同的代码集吗?

我的脚本目前工作正常,但我不得不把它分成 5 个单独的用户脚本,感觉有点草率。

4

1 回答 1

4

要根据 URL 切换运行的代码,请针对位置对象Docif()的部分使用或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.


注意使用 escape \
.test()用于正则表达式的强大功能。例如,
/(alice|bob)\.com/.test (location.hostname)

于 2018-02-02T18:23:31.833 回答