![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Potrzebny mi jest jakiś sposób na znajdowanie ewentualnych błędów w moich skryptach js.
Możliwe że nie zwróciłem na to uwagi w dokumentacji jQuery, ale nie widzę nic co mogłoby mi w tym pomóc. Wielce przydatna byłaby funkcja w stylu PHPowego var_dump(). |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Wypróbowałem 5 skryptów wszystkie zwracają taki błąd jak poniżej lub podobne...
Cytat Błąd: [Exception... "Security Manager vetoed action" nsresult: "0x80570027 (NS_ERROR_XPC_SECURITY_MANAGER_VETO)" location: "JS frame :: http://192.168.0.7/templates/default/js/print_r.js :: anonymous :: line 14" data: no] Skrypt:Plik źródłowy: http://192.168.0.7/templates/default/js/print_r.js Wiersz: 14 Cytat print_r = function(a, dTab) Wygląda na to że błąd powoduje implementacja foreach() w skryptach javy. Aha tak przy okazji IE się oczywiście zawiesza (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)
{ //initiate the return variable var ret = ""; //the depth tabbing variable helps in indentation if(!dTab) dTab = "\t"; //If the input variable is a collection object then iterate if(typeof(a) == 'object'){ //foreach implementation in javascript for(var sub in a) { var val = a[sub]; ret += "'" + sub + "' =>"; //incase the value obtained is again a collection if(typeof(val) == 'object') { //drill it down by calling the print_r function recurrsively ret += "\n" + dTab + "[" + print_r(val, dTab + "\t") + "]\n" + (dTab.substring(0, (dTab.length-1))); } else { ret += " \"" + val + "\""; } } } else { //Not a collection ret = "'" + a + "' is of type '" + typeof(a) + "', not array/object."; } return ret; } |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Przetestowałem kod w FF3 i IE6: działa poprawnie. Pokaż co do niego przekazujesz.
A ogólnie do debugowania to używaj Firebuga (słyszałem też o jakiś debuggerze Microsoftu, ponoć dobrym, ale nie pamiętam nazwy) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Firebuga ? To powiedz mi jeszcze jak mam go do debugowania używać...
edit> Nie potrzebny mi kombajn do wyświetlania statusów zmiennych w poszczególnych momentach wykonania który jeszcze kawę parzy. Chce małą prostą funkcję do wyświetlania zmiennych... <edit Napisałem własną funkcję na podstawie powyższej. Cytat print_r = function(a) Przy mniejszej ilości danych sprawdza się znakomicie. Niestety przy wywołaniu display(print_r($('input.chbx[@name=has_sub_controllers_'+ id +']'))), wyrzuca błąd "too much recursion http://192.168.0.7/templates/default/js/print_r.js Line 23"
{ // initiate the return variable var ret = ""; // If the input variable is a collection object then iterate if(typeof(a) == 'object') { // foreach implementation in javascript for(var sub in a) { var value = a[sub]; ret += "['" + sub + "'] => "; // incase the value obtained is again a collection if(typeof(value) == 'object') { ret += print_r(value); } else { // If function print only prototype if(is_function(value.toSource())) { value = value.toSource(); ret += value.substr(0, value.indexOf(')')) + ")<br>\n"; } else { ret += "'" + html2string(value) + "'<br>\n"; } } } } else { // Not a collection ret = typeof(a) + "('" + a + "')"; } return ret; } is_function = function(string) { if(string.match(/^function/)) { return true; } else { return false; } } html2string = function(html) { var string = new String(html); return string.replace(/>/g, '>').replace(/</g, '<'); } display = function(content) { var myWindow = window.open('', '', 'width=600,height=250,toolbar=yes') myWindow.document.write(content) myWindow.focus() } Ten post edytował orglee 28.10.2008, 14:06:54 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 31 Dołączył: 13.11.2006 Skąd: się znamy? Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Przy mniejszej ilości danych sprawdza się znakomicie. Niestety przy wywołaniu display(print_r($('input.chbx[@name=has_sub_controllers_'+ id +']'))), wyrzuca błąd "too much recursion http://192.168.0.7/templates/default/js/print_r.js Line 23" To chyba wiesz co ten błąd znaczy;) Po co chcesz wyświetlać cały obiekt jQuery O.o? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
No i jak zwykle dziękuję empathon.
Ehh w sumie sam mogłem poszukać... Upierdliwy się ostatnio zrobiłem. Pora na jakieś wakacje. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:19 |