jQuery替换挂起chrome
jQuery replace hangs chrome
为什么这个脚本会冻结Chrome?还有,有没有更好的方法来做我想做的事情(用另一个词替换一个词的所有实例)?
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
var replaced = $("body").html().replace('Foo','Bar');
$("body").html(replaced);
});
</script>
<p>Foo</p>
</body>
</html>
因为执行替换的脚本在主体中。当调用.html(HTMLString)
并且HTMLString
包含<script>
时,jQuery将执行该脚本。因此,在替换主体之后,您将再次调用替换主体的代码,当它运行时,它将再次调用自己,依此类推
每次进行替换时,您还将加载另一个jQuery副本,因为<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js">
在主体中。
一种解决方案是将所有脚本放在<head>
中,而不是放在正文中。另一种情况是,如果您只针对一个包含页面真实内容的容器DIV。
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
var replaced = $("#content").html().replace(/Foo/g,'Bar');
$("#content").html(replaced);
});
</script>
<div id="content">
<p>Foo</p>
</div>
</body>
</html>
此外,当您将字符串作为.replace()
的第一个参数时,它只替换第一个匹配项。如果要替换所有匹配项,则需要使用带有g
修饰符的正则表达式。
相关文章:
- JavaScript执行暂时挂起页面
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 应用将图表转换为图像的jqplot代码时Chrome挂起
- 如何在不使用Internet Explorer的情况下从未挂起的HTML文件执行程序
- MongoDB collection.find()查询挂起
- 使用子字符串方法时应用程序挂起的原因
- 如何在AngularJS中取消挂起的请求
- 从node.js应用程序调用Mongoose Model.save()时挂起
- Chrome,Safari在从本地存储读取时挂起,而Firefox很好
- IE 10 挂起 XMLHttpRequest 6 分钟,然后响应请求(使用 AngularJS 实现 CRSF)
- 挂起 JavaScript 键关闭事件
- jQuery替换挂起chrome
- 为什么一个带有UI的chrome扩展的本地消息主机会挂起
- jQuery Datepicker在重新单击输入字段时挂起(Chrome)
- 为什么这个正则表达式使Chrome挂起
- Express.js CRUD - GET在Chrome中删除后挂起
- FF+Firebug报错“正则表达式太复杂”,IE崩溃,Chrome挂起
- 在Chrome / Safari下载文件期间$ajax调用挂起,而不是在IE / Firefox中