Chrome崩溃与这个JS
Chrome crashes with this JS
Chrome浏览器崩溃。有一个具有多个输入的表单。JS代码必须在提交之前检查它们是否被填充。但是成功提交后Chrome崩溃了。
<script>
$(document).ready(function(){
var form = $('form#add');
form.submit(function(){
var filledInputs = $('form#add input[value!=""]');
$('form#add input[value=""]').css('border','solid 1px red');
filledInputs.css('border','');
if (filledInputs.length >= 9) {
form.submit();
return true;
} else {
return false;
}
});
});
</script>
当有>=9
填充输入时,您的函数是无限递归的。在提交时,表单执行验证,如果验证通过,则再次调用submit来验证表单,以此类推。
如果您删除form.submit();
,只返回true
,表单将正确提交
您的表单已经提交,您不需要再次提交:
if (filledInputs.length >= 9) {
// form.submit();
return true; // return true is to continue with the form submission
} else {
return false;
}
把代码缩短一点,问题就明显了:
form.submit(function(){
form.submit();
})
这会导致无限递归,耗尽堆栈,并导致通常导致chrome中止脚本(或崩溃)。
你可以这样做:
form.submit(function () {
var filledInputs = $('form#add input[value!=""]');
$('form#add input[value=""]').css('border', 'solid 1px red');
filledInputs.css('border', '');
return (filledInputs.length >= 9);
});
表单将根据输入字段的验证提交。
相关文章:
- 在扩展崩溃Firefox中使用JS-ctypes
- HTML5网络音频API wavesurfer.js在大型mp3文件上崩溃
- three.js内存泄漏/浏览器崩溃
- Firefox Developer Edition的烦人行为-在调试JS时崩溃很多
- 将大型 JSON 文件与 d3.js 一起使用会导致大量性能下降/崩溃
- Iron Router,Meteor 应用程序崩溃时 router.js 被放置在 /lib 中
- 主干/下划线 js “太多递归”和“检查目标崩溃”错误
- 节点.js - 事件.js:154 抛出错误写入 EPIPE;程序崩溃
- iPad浏览器在使用动态JS加载图像后崩溃
- 幻影JS崩溃 - 退出代码126
- Node.js由于某种原因崩溃了
- D3中的脚本.js使Chrome崩溃
- 2 个 http 服务器用于 2 个服务在 Node.js Bluemix 应用程序中崩溃
- Express.js API调用使我的服务器崩溃
- Safari Mobile-崩溃-三个JS纹理未加载
- Node.js应用程序与mysql崩溃
- Socket.io连接导致node.js服务器崩溃
- Node.js服务器崩溃处理
- 当需要JSON时Node.js崩溃
- 简单的语音合成js崩溃Chrome到Aw快照屏幕