Jquery 在网页上突出显示firefox插件的电话号码

Jquery 在网页上突出显示firefox插件的电话号码,jquery,regex,firefox-addon-sdk,highlighting,phone-number,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{

我正在尝试使用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);
});
我的正则表达式是完美的,但是在给定的网页上检测不到数字

例子

+111111111111
+11 (1) 111 11 11111
+11 (1) 111 11-11111
+11 111 11 11111
+11 (1) 1111 111111111
+11111111111111
+11 1111 111111111
(低级)匹配模式API以构造函数中的形式内置到(高级)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:'*'

请举例说明应该匹配的电话号码。@MElliott:如果这些号码出现在网页上,应该会被检测到。是的,必须在main.js文件中。。它在这里工作:在这里:谢谢…它工作得很好..但是在一些页面上,附加组件会减慢整个网页的速度,并且数字不会被检测到,但是在刷新页面后,数字会突出显示..附加组件有问题吗,或者为了加快速度需要做任何更改..您使用的匹配模式是什么?您可以尝试的操作:设置,将
attachTo
构造函数属性设置为
['top','existing']
,使用Jquery 2.x,删除for-each循环。@willma:我正在使用Regex检测电话号码。我的正则表达式工作得很好,但它除了检测实际的电话号码外,还能检测id标签下的其他一些号码。我尝试过构造函数属性,但它不会影响插件,但加载页面的延迟会减少。@Adi我的意思是构造函数上的
include
参数的值是多少?页面mod附加到主文档和每个iframe,因此使用
attachTo:'top'
应该可以提高性能,因为只搜索主文档。除此之外,我不知道如何提高性能。可能是另一个问题的好话题。
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")]
});