【发布时间】:2016-09-10 06:44:11
【问题描述】:
我正在开发 android 中的自动电话号码突出显示应用程序。我在我的 android 浏览器中包含了 javascript 文件,并使用以下代码重写了 html 文档。
var regex = /\d{10}/g;
var text1234 = $("body:first").html();
text1234 = text1234.replace(regex, "<a href='tel:$&'>$&</a>");
$("body:first").html(text1234);
此代码在某些不包含 javascript 文件的网页上运行,并且浏览器与其他网页崩溃。在评论“$("body:first").html(text1234);”时此行只是页面加载而没有更改。如何解决这个问题。
【问题讨论】:
-
以什么方式崩溃?
-
浏览器会因包含 javascript 内容的网页而崩溃。显示只是加载和崩溃。
-
猜测运行正则表达式会占用太多内存。事实上,您确实意识到您的代码替换了 HTML 内容中的所有 10 位数字?那肯定会在某个时候失败。
<div class="test1234567890"></div>会崩溃 -
当我将 "$("body:first")" 替换为 "$("html:first")" 时,页面已加载,但页面 javascript 函数(包括页面函数)未加载工作。
-
请参阅 stackoverflow.com/q/1732348/1362755 为什么这是一个坏主意。使用 DOM API,而不是正则表达式。
标签: javascript android jquery html dom