用电子邮件链接替换所有特定文本

Replace All Specific Text With Email Link?

本文关键字:文本 电子邮件 链接 替换      更新时间:2023-10-28

我正在尝试将特定文本CONTACTUSEMAIL的所有实例转换为电子邮件链接。这就是我尝试的:

$('body').each(function(){
var AddEmailLink = $(this).html().replace(/(CONTACTUSEMAIL)/, '<a href="mailto:contact@contact.com">contact@contact.com</a>');
$(this).html(AddEmailLink);
});

$('body').each(function(){
var AddEmailLink = $(this).html().replace(/(CONTACTUSEMAIL)/, '<a href="mailto:contact@contact.com">contact@contact.com</a>');
$(this).html(AddEmailLink);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
CONTACTUSEMAIL

它有效,但并非没有错误。它的chrome控制台显示"Uncaught SyntaxError:Unexpected token)",还显示"主线程上的同步XMLHttpRequest因其对最终用户体验的有害影响而被弃用。"。

我该怎么解决这个问题?

您提到的错误不是由您的regex 引起的

Synchronous XMLHttpRequest on the main thread is deprecated是由使用async:false的ajax请求引起的,而该请求本应使用promises,并且很可能是同一请求正在接收无效或空响应,导致Uncaught SyntaxError: Unexpected token )

或者,另一个原因可能是您正在替换页面正文的全部内容,如果页面正文包含任何script标记,当您将其重新附加到内容时,jQuery会将脚本标记附加到文档中,并将导致其加载async:ffalse的脚本并触发此警告

如果第二种情况是真的,您将需要将所有脚本标记移出正文,或者更改逻辑以不替换整页正文

此外,您的正则表达式应该是/CONTACTUSEMAIL/。这些括号正在创建捕获组。。。。。但在这种情况下,它是一个无用的捕获组