Как я могу узнать этот недостаток кодирования JavaScript из браузера, так как ничего не появляется? - PullRequest
0 голосов
/ 07 января 2012

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 Ответ

1 голос
/ 07 января 2012

Если вы используете более старые версии 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 в режиме Сценарии .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...