Firefox附加SDK模式匹配无法正常工作

时间:2016-03-19 13:43:46

标签: firefox firefox-addon firefox-addon-sdk

当我使用以下代码

var pageMod = require("sdk/page-mod");

pageMod.PageMod({
  include: "http://www.page.com/user/*",
  contentScript: 'window.alert("user");'
});

我得到警觉。但我想替换" http://www。"部分所以我试过了:

*://*.page.com/user/*
*://page.com/user/*
*.page.com/user/*

这些都不适合我。 developer.mozilla.org中的示例表明至少其中一个应该可以工作。这有什么问题?

1 个答案:

答案 0 :(得分:2)

我以前遇到过这个问题,你不能在模式中使用超过1 *(通配符)。

您有2个选项

  • 使用一系列网站,即["http://www.page.com/user/*", "https://www.page.com/user/*"]
  • 使用RegEx(正则表达式)

以下是尝试*://*.page.com/user/*

时使用RegEx获取所需内容的方法

使用以下RegEx:.+:\/\/(.+\.)?page\.com\/user\/.*

以下是它的工作原理(如果您不了解RegEx,我建议您学习它):

.+          # Any character 1+ times - Selects the Protocol (http, https, ftp)
:\/\/       # :// After Protocol (/ have to be escaped using \/)
(.+\.)?     # (Optional) Letters followed by a . (dot) - (www.)
page        # Website Name - (page)
\.com       # .com - (Top-Level Domain)
\/user\/    # Folder /user/ (/ have to be escaped using \/)
.*          # Any character 0 or more times - (Any folders / files after the /user/ folder)

如果你还不了解RegEx,这是一个学习RegEx的好网站:RegexOne

因此,您的完整include将是:

include: /.+:\/\/(.+\.)?page\.com\/user\/.*/,

注意,在JavaScript中,您可以通过在/ s

中包含它来定义RegEx

以下是RegEx工作的Live Demo