【问题标题】:html rewrite not working in javascripthtml重写在javascript中不起作用
【发布时间】: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 位数字?那肯定会在某个时候失败。 &lt;div class="test1234567890"&gt;&lt;/div&gt; 会崩溃
  • 当我将 "$("body:first")" 替换为 "$("html:first")" 时,页面已加载,但页面 javascript 函数(包括页面函数)未加载工作。
  • 请参阅 stackoverflow.com/q/1732348/1362755 为什么这是一个坏主意。使用 DOM API,而不是正则表达式。

标签: javascript android jquery html dom


【解决方案1】:

答案如下。它工作得很好。

 var phonePattern = /\s((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}/g,
phoneReplacement = '<a href="tel:$&">$&</a>';

$(document).ready(function () {

    $('*','body').each(function() {
        $(this).html( $(this).html().replace(phonePattern,phoneReplacement)                );
    });

});

【讨论】:

    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 2013-04-15
    • 2016-12-13
    • 2018-03-02
    • 2018-10-05
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多