2012-04-17 11 views
9

pojawia się następujący błąd i iPada, ale nie w przeglądarkach desktopowych:Błąd iPad JavaScript nie pomocny

JavaScript: Error 
undefined 
TypeError: 'undefined' is not a function 

Jest to większy js aplikacji i ten komunikat o błędzie jest zupełnie nieprzydatny. Czy jest jakiś sposób, aby uzyskać numer linii błędu lub więcej informacji?

Aktualizacja: To właśnie stało się fajne.

line : 0  
page : undefined 
desc : TypeError: 'undefined' is not a function 
chr : undefined 

Czy agent użytkownika podszywał się pod FF i safari. Żaden błąd.

+2

Miałem ten sam problem i chociaż sugestia window.onerror była początkiem, otrzymałem te same niepomocne wyniki. Skończyło się na tym, że musiałem zaśmiecać moje skrypty za pomocą console.logs, aby się do nich zbliżyć. Dzięki iOS czujemy, że cofnęliśmy się do 6 dni z debugowaniem błędów ... Mój specyficzny problem polegał na tym, że zakładałem funkcję() {}. Funkcja bind() była obsługiwana w mojej aplikacji. Nie było, ale moje przeglądarki programistów (Safari/Chrome) obsługują to natywnie, a iOS Safari najwyraźniej nie. – heff

+0

Wierzcie lub nie, ".bind" również było moim problemem. – Fresheyeball

Odpowiedz

13

Można spróbować rejestracji niestandardowej procedury obsługi błędów do window.onerror

window.onerror = function (desc,page,line,chr) 
{ alert('Line:'+line); } 

desc = Komunikat o błędzie
page = Plik/strony, na której wystąpił błąd
line = Dobrze ...
chr = pozycja znaku błędu w linii

+0

oo to było fajne. W jaki sposób mogę uzyskać nazwę pliku? – Fresheyeball

+0

wypróbuj zmienną 'page' :) - Edytowałem odpowiedź, aby zawrzeć informacje o zawartości dla wszystkich czterech zmiennych :) – bardiir

+0

dla strony otrzymuję" niezdefiniowany ", dziwny – Fresheyeball

2

Po powiązaniu obsługi błędów z window.onerror, i t powinno podać numer linii, np.

window.onerror = function(msg,url,line) { 
    alert('The error is on line '+line); 
} 

to pytanie: Debug JavaScript errors on iPad wydaje się wskazywać, można włączyć debugowanie też.

Jeśli skrypt jest ładowany dynamicznie, może być trudno uzyskać takie informacje w dowolnym środowisku.