Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Odpluskwianie skryptu, Debugowanie - istnieje jakieś var_dump() ?
starach
post
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().
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
dr_bonzo
post
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%)
-----


http://www.google.com/search?hl=en&saf...amp;btnG=Search
Go to the top of the page
+Quote Post
starach
post
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]
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 (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)
Go to the top of the page
+Quote Post
lord_t
post
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)
Go to the top of the page
+Quote Post
starach
post
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)
{
// 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"

Ten post edytował orglee 28.10.2008, 14:06:54
Go to the top of the page
+Quote Post
empathon
post
Post #6





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

Ostrzeżenie: (0%)
-----


http://alternateidea.com/blog/articles/200...ng-with-firebug
Go to the top of the page
+Quote Post
lord_t
post
Post #7





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
starach
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:19