У мене є скрипт, який виявляє помилки Javascript на моєму веб-сайті та надсилає їх до мого бекенда для звітування. Він повідомляє про першу виниклу помилку, передбачуваний номер рядка та час.
EDIT для включення доктрипу:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
...
<script type="text/javascript">
//<![CDATA[
// for debugging javascript!
(function(window){
window.onerror = function(msg, url, ln) {
//transform errors
if (typeof(msg) === 'object' && msg.srcElement && msg.target) {
if(msg.srcElement == '[object HTMLScriptElement]' && msg.target == '[object HTMLScriptElement]'){
msg = 'Error loading script';
}else{
msg = 'Event Error - target:' + msg.target + ' srcElement:' + msg.srcElement;
}
}
msg = msg.toString();
//ignore errors
if(msg.indexOf("Location.toString") > -1){
return;
}
if(msg.indexOf("Error loading script") > -1){
return;
}
//report errors
window.onerror = function(){};
(new Image()).src = "/jserror.php?msg=" + encodeURIComponent(msg) + "&url=" + encodeURIComponent(url || document.location.toString().replace(/#.*$/, "")) + "&ln=" + parseInt(ln || 0) + "&r=" + (+new Date());
};
})(window);
//]]>
</script>
Через цей скрипт я гостро знаю про всі помилки javascript, які трапляються на моєму сайті. Один з найбільших правопорушників - "Помилка сценарію". на рядку 0. у Chrome 10+ та Firefox 3+. Ця помилка не існує (або її можна назвати чимось іншим?) В Internet Explorer.
Виправлення (23.05.2013): Ця помилка "Сценарій, рядок 0" тепер відображається в IE7 та, можливо, інших версіях IE. Можливо, результатом недавнього виправлення безпеки IE, оскільки такої поведінки раніше не існувало.
Хтось має уявлення про те, що означає ця помилка чи що її спричиняє? Це трапляється приблизно на 0,25% моїх загальних завантажень сторінок і становить половину повідомлених помилок.
application/xhtml+xml
щоб запустити його в аналізаторі XHTML (як каже специфікація XHTML). Існує багато вмісту, який претендує на XHTML, але надсилає звичайний HTML-тип. Через те, як неправильно творці вмісту використовують XHTML, браузери вирішили використовувати лише аналізатор XML application/xhtml+xml
(це дійсно суворий синтаксичний аналіз). У програмі hixie.ch/advocacy/xhtml та webdevout.net/articles/beware-of-xhtml сказано, чому б не використовувати HTML-аналізатор з XHTML.