在greasemonkey脚本中区分不同页面的最佳方法是什么?

时间:2017-01-05 11:05:42

标签: javascript firefox greasemonkey userscripts

例如,我想在google.com主页和google.com搜索结果页面中添加一些功能,我想在一个greasemonkey脚本中执行此操作,我这样做:

@include http://google.com*

然后我检查,如果是主页,我在搜索框下添加第三个按钮,例如,如果是结果页面,我更改字体或类似的东西。

区分这些页面的最佳方法是什么?我目前正在做

if (document.URL==="homepage") {
    add button
} else if (document.URL==="searchpage") {
    change font
}
切换会更好吗?有更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

switch比系列if/else if

更快,效率更高

我经常使用就是为了这个目的。

// caching path is faster (although the difference is only milliseconds)
var path = location.pathname;

switch (true) {

  /* ----- Home page ----- */
  case path.indexOf('/path1') !== -1:
    addButton();
    break;

  /* ----- Search page ----- */
  case path.indexOf('/path2') !== -1:
    changeFont();
    break;
}

<强>更新
使用ES6 includes()

var path = location.pathname;

switch (true) {

  /* ----- Home page ----- */
  case path.includes('/path1'):
    addButton();
    break;

  /* ----- Search page ----- */
  case path.includes('/path2'):
    changeFont();
    break;
}