我想在另一个JS函数中插入我的debugger
函数并暂停执行。
我知道return false / true可以完成这项工作,但我希望我的调试器功能能够自动完成。
示例:
<script type="javascript">
function validateFirstName () {
//validating first name field
var fn = $('#firstname').val();
if(fn == "") {
$("#errorMsg").html("Please insert first name");
$("#firstname").focus();
return false;
}
debugger(); //I want to stop everything here
// if validation passes, redirect browser:
window.location = 'nextpage.html';
}
function debugger () {
console.log("Some custom message here");
return false;
}
</script>
您会注意到我将debugger
函数放在validateFirstName()
函数中。
我认为return false
函数中的debugger()
会阻止validateFirstName()
执行。但事实并非如此。
如果不在validateFirstName()
函数中添加return false,我如何使用 debugger()函数来停止所有执行?
答案 0 :(得分:2)
替换
debugger(); //I want to stop everything here
与
return debugger(); //I want to stop everything here
以上示例将始终以true或false结束。
如果它是真的,这将继续到window.location,如果它是假的则停止。
if(!debugger())
return;
在你的情况下,它似乎是一个函数内部的函数,所以你不妨使用
if(!debugger())
return false;
似乎你真正想要做的是在执行代码上设置一个断点
在Chrome浏览器中按Ctrl+Shift+I
然后转到Sources
标签
单击计数行号顶部的向右箭头(看起来像播放按钮)以查看网站列表
找到您的网站点击文件夹
找到你想要的任何脚本
现在单击代码中的任意位置以关闭侧栏
现在终于点击一边倒数行的任何数字
这将设置一个breakpoint
,这意味着如果您通过在您的网站上执行某些操作来使代码转到那里,或者强制代码使用
Console
标签,或只是在地址栏中输入javascript: function_to_call();
答案 1 :(得分:0)
你可以像这样从debugger ()
投掷。
function debugger () {
console.log('Some custom message here');
throw 'Debugging Code';
}
虽然这会做你想要的,但我不推荐它。基本上发生的事情是你抛出的错误没有被你的代码捕获(浏览器会捕获它,但这可能不那么干净)。
答案 2 :(得分:0)
你可能会抛出错误:
function validateFirstName () {
//validating first name field
var fn = $('#firstname').val();
if(fn==""){
$("#errorMsg").html("Please insert first name");
$("#firstname").focus();
return false;
}
debugger(); //I want to stop everything here
// if validation passes, redirect browser:
window.location='nextpage.html';
}
function debugger () {
throw new Error("Some custom message here");
}
try{
validateFirstName();
}catch(e){
console.log(e);
}
答案 3 :(得分:0)
如果您使用的是Chrome等现代浏览器,为什么不使用debugger
呢?
将触发开发人员工具中的调试器。
像这样: debugger; //I want to stop everything here
注意缺少的()