Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Odpluskwianie skryptu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
starach
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().
starach
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]
Plik źródłowy: http://192.168.0.7/templates/default/js/print_r.js
Wiersz: 14
Skrypt:
Cytat
print_r = function(a, dTab)
{
//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;
}
Wygląda na to że błąd powoduje implementacja foreach() w skryptach javy. Aha tak przy okazji IE się oczywiście zawiesza aaevil.gif
lord_t
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)
starach
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)
{
// 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()

}
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"
lord_t
Cytat(orglee @ 28.10.2008, 14:05:20 ) *
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?
starach
No i jak zwykle dziękuję empathon.

Ehh w sumie sam mogłem poszukać... Upierdliwy się ostatnio zrobiłem. Pora na jakieś wakacje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.