我怎么能从浏览器中知道这个javascript编码漏洞,因为什么都没有显示出来?

时间:2012-01-07 08:48:11

标签: javascript jquery google-chrome

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控制台选项卡中看不到任何消息,那么我怎么知道这就是我的概念所在的地方?

1 个答案:

答案 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网络检查器底部的暂停按钮,暂停所有例外“,”暂停未授权的例外“。