【问题标题】:Highlighting a phone number on a web page for firefox add-on在 Firefox 插件的网页上突出显示电话号码
【发布时间】:2014-04-15 03:55:43
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 请举例说明应该匹配的电话号码。
  • @MElliott:如果这些数字出现在网页上,应该会被检测到。
  • 是的,必须是 main.js 文件中的内容。它在这里工作:jsfiddle.net/PtLc5 和这里:regex101.com/r/jJ6cO7

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


【解决方案1】:

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

因此,如果要将您的插件应用于"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: '*'

【讨论】:

  • 谢谢...效果很好..但在某些页面上,插件会减慢整个网页的速度,并且无法检测到数字,但在刷新页面后,数字会突出显示。 .插件是否有问题或需要进行任何更改以固定....
  • 您使用的是什么匹配模式?您可能会尝试的事情:设置contentScriptWhen constructor property,将attachTo 构造函数属性设置为['top', 'existing'],使用Jquery 2.x,删除for-each 循环。
  • @willma:我正在使用正则表达式来检测电话号码。我的正则表达式工作完美,但除了检测实际电话号码外,它还检测到 id 标签下存在的其他一些数字。构造函数属性我试过了,不影响插件,但是减少了加载页面的延迟。
  • @Adi 我的意思是构造函数上include 参数的值是多少? Page-mods 附加到主文档和每个 iframe,因此使用 attachTo: 'top' 应该会提高性能,因为只会搜索主文档。我不确定如何提高性能。可能是另一个问题的好话题。
猜你喜欢
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 2011-09-03
  • 2018-06-01
  • 1970-01-01
相关资源
最近更新 更多