多个Greasemonkey Metablocks

时间:2010-07-12 22:24:30

标签: greasemonkey

我正在尝试为网站层次结构编写一个Greasemonkey脚本,以便我对http://www.foo.com/*进行一系列代码修改,然后对http://www.foo.com/bar/*进行更具体的修改,还有http://www.foo.com/foobar/*的其他代码修改3}}

无论如何,我在同一个剧本中写下所有这些,还是我必须制作多个?

2 个答案:

答案 0 :(得分:2)

  

无论如何我都要写所有   这些在同一个脚本中,或者我有   制作多个?

是的,只需使用这三个@includes,然后在您的用户脚本中执行类似的操作(取决于脚本的具体内容):

var currentURL = (document.location+'');
if (currentURL .match(/http:\/\/www\.foo\.com\/foobar\/.*/)) {
  // do stuff for page set A
} else if (currentURL .match(/http:\/\/www\.foo\.com\/foo\/.*/)) {
  // do stuff for page set B
} else if (currentURL .match(/http:\/\/www\.foo\.com\/.*/)) {
  // do stuff for page set C
}

答案 1 :(得分:2)

我在处理不同子位置的不同函数时显示的一个巧妙的技巧是使用函数名的全局目录作为一种虚拟交换机...

// do anything that is supposed to apply to the entire website above here.
var place = location.pathname.replace(/\/|\.(php|html)$/gi, "").toLowerCase();
// the regex converts from "foo/" or "foo.php" or "foo.html" to just "foo".
var handler;
if ((handler = global["at_" + place])) {
    handler();
}

// end of top-level code.  Following is all function definitions:
function at_foo() {
    // do foo-based stuff here
}
function at_foobar() {
    // do foobar stuff here.
}