场景:加载项检测网页上的电话号码,并通过超链接突出显示。当用户点击该号码时,它应该打开一个新的弹出窗口,要求登录系统。
问题:
无法在鼠标点击时打开html页面。以下是代码
代码
main.js
var {data} = require("sdk/self");
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
include: "*",
attachTo: ["top"],
contentScriptFile: [data.url("jquery-2.1.0.js"),data.url("script.js")]
});
var myPanel = require("sdk/panel").Panel({
contentURL: self.data.url("page.html")
});
myPanel.show();
script.js
var regex = /\+?\d{1,4}?[-.\s]?\(?\d{1,3}?\)?[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}/g;
jQuery.fn.linker = function () {
//var regex = /\+?\d{1,4}?[-.\s]?\(?\d{1,3}?\)?[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}/g;
$(this).contents()
.filter(function() { return this.nodeType !== Node.TEXT_NODE; })
.each(function () { $(this).linker(); });
$(this).contents()
.filter(function() { return this.nodeType === Node.TEXT_NODE; })
.each(function () {
$(this).replaceWith(
$(this).text().replace(regex,"<a href=\"\">$&</a>")
);
});
};
$(document).ready(function () {
$('body').linker();
$( 'a' ).click( function () {
var href = $(this).text();
//alert(href);
var tel = regex.test(href);
if ( tel ) {
//alert( 'A telephone link was clicked: ');
href = href.replace(/[(]\d[)]|[. -]/g,'');
//alert(href);
//event.preventDefault();
window.open($(this).attr('href'),"popupWindow","width = 600,height=600,scrollbars=yes");
}
});
});