Mam skrypt, który wykrywa błędy Javascript w mojej witrynie i wysyła je do zaplecza w celu zgłoszenia. Podaje pierwszy napotkany błąd, przypuszczalny numer linii i godzinę.
EDYCJA, aby dołączyć doctype:
<!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>
Z powodu tego skryptu jestem w pełni świadomy wszelkich błędów javascript, które występują w mojej witrynie. Jednym z największych przestępców jest „Błąd skryptu”. w linii 0. w Chrome 10+ i Firefox 3+. Ten błąd nie istnieje (lub może być nazywany czymś innym?) W Internet Explorerze.
Korekta (23.05.2013): Ten błąd „Błąd skryptu, wiersz 0” jest teraz wyświetlany w IE7 i prawdopodobnie w innych wersjach IE. Prawdopodobnie wynik niedawnej poprawki zabezpieczeń IE, ponieważ takie zachowanie wcześniej nie istniało.
Czy ktoś ma pojęcie, co oznacza ten błąd lub co go powoduje? Zdarza się to w około 0,25% moich wszystkich ładowań stron i stanowi połowę zgłoszonych błędów.
application/xhtml+xml
aby uruchomić ją w parserze XHTML (jak mówi specyfikacja XHTML). Istnieje wiele treści, które podają się za XHTML, ale wysyłają normalny typ HTML. Z powodu tego, w jaki sposób twórcy treści używają niepoprawnie XHTML, przeglądarki zdecydowały się używać parsera XML tylko application/xhtml+xml
(jest to naprawdę ścisły parser). Hixie.ch/advocacy/xhtml i webdevout.net/articles/beware-of-xhtml mówi dlaczego nie używać HTML parser z XHTML.