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

时间:2016-04-01 00:07:49

标签: javascript jquery html

我正在尝试将特定文本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因其对最终用户体验的不利影响而被弃用。”。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您提到的错误不是由您的正则表达式引起的

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

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

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

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