2013-03-13 3 views
7

У меня есть функция, которую я использую для замены некоторого текстового вывода кнопкой или проданной этикеткой соответственно.Функция документа JQuery готова к работе в IE

jQuery(document).ready(function() { 
jQuery('td.register').each(function() { 
    var text = jQuery(this).text(); 
    var exploded = text.split(','); 
    console.log(exploded[0]); 
    console.log(exploded[1]); 
    if (exploded[0] == 0) { 
     jQuery(this).html("<font color='red'>SOLD OUT</font>"); 
    } else { 
     jQuery(this).html("<a class='button' title ='Register for this event' href='" + exploded[1] + "'>Register</a>"); 
    } 
}) 
}); 

В большинстве браузеров работает нормально, но клиент жалуется на IE9, что он не работает. Когда я тестирую его на своем компьютере, большую часть времени он работает, но иногда это не так, и каждый раз я тестирую его на браузерах.org, он не работает. Он отображается в тестах browsershots.org, как если бы jQuery даже не запускался.

+2

Это потому, что вы используете 'console.log()', который доступен в IE9 [только тогда, когда Dev инструменты открыты] (HTTP: // stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function). Просто удалите эти строки, и он должен работать. – JJJ

+1

И как примечание, вы можете убедиться, что контент выглядит нормально и, желательно, работает, даже когда JavaScript отключен. – JJJ

+0

Я нашел это по Googling «функция готовности документа не работает в Internet Explorer». Но мне интересно, как я мог сам открыть эту проблему? Как я мог отследить его? В качестве побочной заметки у меня были некоторые проблемы на странице AJAX, а затем была обнаружена функция 'ajaxComplete'. –

ответ

7

консоль не определен в IE9 изменить код, как

jQuery(document).ready(function() { 
jQuery('td.register').each(function() { 
    var text = jQuery(this).text(); 
    var exploded = text.split(','); 
    if(typeof(console)!='undefined'){ 
     console.log(exploded[0]); 
     console.log(exploded[1]); 
    } 
    if (exploded[0] == 0) { 
     jQuery(this).html("<font color='red'>SOLD OUT</font>"); 
    } else { 
     jQuery(this).html("<a class='button' title ='Register for this event' href='" + exploded[1] + "'>Register</a>"); 
    } 
}) 
}); 
+0

Я не могу поверить, что это было так. И причина, по которой я не мог воспроизвести ее, - это то, что сказал Джухана выше - она ​​работает, когда инструменты dev открыты. Спасибо! –

+0

IE делает такую ​​вещь для вас ';)', рад, что разрешил вашу проблему – dakait

+0

Помог мне понять, что IE9 не имеет консоли. Не мог понять, почему мой код не работал, все время он был вызван консолью;) Спасибо, +1 – Ben

Смежные вопросы