代码之家  ›  专栏  ›  技术社区  ›  Zach

使用相同的用户脚本在不同的URL上运行不同的代码

  •  1
  • Zach  · 技术社区  · 6 年前

    我知道可以通过添加 @include 语句,但是否可以基于URL运行不同的代码集?

    我的脚本目前运行正常,但我不得不将其分解为5个单独的用户脚本,感觉有点马虎。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Brock Adams    6 年前

    要切换每个URL运行的代码,请使用 if() switch() 针对部分 the location object Doc .

    为了避免误报和副作用,最好只测试最具辨别力的属性(通常是 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() 用于regex的强大功能。例如
    /(alice|bob)\.com/.test (location.hostname) .

    推荐文章