如何使用javascript更改所有文字?

时间:2015-12-09 16:47:28

标签: javascript html dom

我想构建一个Chrome应用程序,它可以找到看起来像电话的所有字符串,并用链接替换它们。我想只发生文本元素,因此它不会破坏应用程序运行的网站上的javascript函数。

这是我到目前为止所做的:

var regex = /((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}(?!([^<]*>)|(((?!<a).)*<\/a>))/g;
var text = $("body:first").html();
text = text.replace(regex, "<a href=\"https://www.mylink.com/number=$&\">$&</a>");
$("body:first").html(text);

但如果有javascript则会中断

1 个答案:

答案 0 :(得分:0)

是的,您的代码只检索DOM当前状态的标记表示,并覆盖它,丢失所有事件绑定和许多其他重要数据。

您需要做的是遍历所有文本节点。单独使用sizzle选择器无法访问文本节点,因此您需要依赖jQuery的contents()函数。

您可以执行以下操作来获取所有文本节点:

Deferred