Firefox 附加 SDK 模式匹配不起作用
Firefox add-on SDK pattern matching not working
当我使用下面的代码时
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/*
和 none 对我有用。 developer.mozilla.org 中的示例表明至少其中一个应该有效。这些有什么问题?
我以前遇到过这个问题,你不能在模式中使用超过 1 个 *
(通配符)。
您有 2 个选择
- 使用一系列网站,即
["http://www.page.com/user/*", "https://www.page.com/user/*"]
- 使用 RegEx(正则表达式)
这里是你如何使用 RegEx 来获得你想要的东西,当你尝试 *://*.page.com/user/*
使用以下正则表达式:.+:\/\/(.+\.)?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,这是一个学习正则表达式的好网站:RegexOne
因此,您的完整 include
将是:
include: /.+:\/\/(.+\.)?page\.com\/user\/.*/,
请注意,在 JavaScript 中,您通过将正则表达式封装在 /
s
中来定义它
这是一个 Live Demo 正则表达式
当我使用下面的代码时
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/*
和 none 对我有用。 developer.mozilla.org 中的示例表明至少其中一个应该有效。这些有什么问题?
我以前遇到过这个问题,你不能在模式中使用超过 1 个 *
(通配符)。
您有 2 个选择
- 使用一系列网站,即
["http://www.page.com/user/*", "https://www.page.com/user/*"]
- 使用 RegEx(正则表达式)
这里是你如何使用 RegEx 来获得你想要的东西,当你尝试 *://*.page.com/user/*
使用以下正则表达式:.+:\/\/(.+\.)?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,这是一个学习正则表达式的好网站:RegexOne
因此,您的完整 include
将是:
include: /.+:\/\/(.+\.)?page\.com\/user\/.*/,
请注意,在 JavaScript 中,您通过将正则表达式封装在 /
s
这是一个 Live Demo 正则表达式