我正在尝试将特定文本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因其对最终用户体验的不利影响而被弃用。”。
我该如何解决这个问题?
答案 0 :(得分:0)
您提到的错误不是由您的正则表达式引起的
Synchronous XMLHttpRequest on the main thread is deprecated
是由一个使用async:false
的ajax请求引起的,当它应该使用promises
并且很可能是同一个请求正在接收而且无效或空响应导致Uncaught SyntaxError: Unexpected token )
1}}
或者,另一个原因可能是您要替换页面正文的全部内容,如果您的网页正文包含任何script
代码,当您重新附加内容时,jQuery将脚本标记附加到文档,并使其使用async:false加载脚本并触发此警告
如果第二种情况属实,您需要将所有脚本标记移出正文或更改逻辑以不替换整页正文
另外,你的正则表达式应该是/CONTACTUSEMAIL/
这些括号正在创建一个捕获组 .....但在这种情况下它是一个无用的捕获组