html是:
<input type='button' value='AddAAAA' id='tagbutton' onclick='add_tag_my();' />
javascript片段:
function get_the_script(){
alert("function get_the_script");
$.getScript("js/global.js",function(){
alert("script loaded");
//addtag();
alert("after getscript");
});
}
function add_tag_my(){
alert("i am add_tag_my()");
get_the_script();
}
global.js包含:
golabl_var=12;
alert("new_selection =" + new_selection);
js变量new_selection没有声明,因此当我运行脚本时,我会输出到代码行:alert("function get_the_script");
没有代码输出因此转发(另外2个警报不显示)。但是,如果我将global.js
中提到的行更改为alert("new_selection");
,我也会得到2个警告框的输出。
我的问题是,当我使用首先提到的global.js代码时,我在chrome控制台选项卡中看不到任何消息,那么我怎么知道这就是我的概念所在的地方?
答案 0 :(得分:1)
如果您使用某些旧版本的jQuery,您将在控制台中收到此错误。
但在新版本中,动态加载的Javascript(使用eval
函数)的执行位于try..catch
块(第7371行)内。 jQuery捕获异常,因此控制台中不会显示任何错误。但是你可以为jQuery ajax函数添加错误处理程序并在函数内部接收异常。
您可以添加像这样的全局ajax错误处理程序
$("div.error").ajaxError(function (e, jqxhr, settings, exception) {
if (settings.dataType == 'script') {
$(this).html(exception);
}
});
function get_the_script() {
alert("function get_the_script");
$.getScript("js/global.js", function () {
alert("script loaded");
//addtag();
alert("after getscript");
});
}
或者您可以将ajax
函数与错误处理程序一起使用,而不是getScript
$.ajax({
url: "js/global.js",
dataType: "script",
success: function (data) {
alert("script loaded");
//addtag();
alert("after getscript");
},
error: function (xhr, textStatus, errorThrown) {
alert(errorThrown);
}
});
如果您不想添加任何错误处理程序,但只是想在开发时识别错误,可以使用选项“不要暂停,例外”,“通过在脚本模式下切换Chrome网络检查器底部的暂停按钮,暂停所有例外“,”暂停未授权的例外“。