突出显示firefox附加组件的网页上的电话号码

时间:2014-03-11 13:39:56

标签: jquery regex firefox-addon-sdk highlighting phone-number

我正在尝试使用MDN提供的文档开发Firefox附加组件。在样本HTML页面上测试时,我的正则表达式运行良好。但是,在开发附加组件时会出现问题。以下是我的代码,其名称为my-scripts.js。

$("body:first").each(function(){
// Create a REGEX Expression to detetc a phone number
var regex =/\+\d{0,3}[-.\s]?\(?\d?\)?[-.\s]?\s?\d{1,4}[-.\s]?\d{1,9}[-.\s]?\d{5}/g;
var text = $(this).html();
text = text.replace(regex, "<a href=\"javascript:;\">$&</a>");
$("body:first").html(text);
});

以下是名为main.js的主要Javascript文件。

var pageMod = require("sdk/page-mod");
var { MatchPattern } = require("sdk/util/match-pattern");
var pattern = new MatchPattern("http://example.com/*");
var self = require("sdk/self");
pageMod.PageMod({
contentScriptFile: [self.data.url("jquery-1.11.0.js"), self.data.url("my-script.js")]
});

我的正则表达式很完美,但没有检测给定网页上的数字

实施例

+111111111111
+11 (1) 111 11 11111
+11 (1) 111 11-11111
+11 111 11 11111
+11 (1) 1111 111111111
+11111111111111
+11 1111 111111111

1 个答案:

答案 0 :(得分:1)

(较低级别)匹配模式API以构造函数中include property的形式内置到(更高级别)PageMod API中。在PageMod文档中链接匹配模式模块的唯一原因是,您可以了解匹配字符串的工作方式。

因此,如果您希望将附加组件应用于"http://example.com/*",则main.js应如下所示:

var {data} = require("sdk/self");
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
  include: "http://example.com/*",
  contentScriptFile: [data.url("jquery-1.11.0.js"), data.url("my-script.js")]
});

如果我误解了(由于其他原因,匹配模式行在那里),并且您希望将正则表达式应用于每个页面,请使用include: '*'