javascript debuger
От: RobinHood  
Дата: 16.04.04 21:12
Оценка: +1
привет!
может кто небудь посоветует как делаеть debug javascript.
понимаю что можно делать что то типа алерт и вызывать в функции. но что делать если
функция возврашает object. неужели нет никакой возможности делать дебаг на клиентскои
стороне(имею доступ практически к любым средствам разработки vs7,6. может dot.net ето делает???)...
если кто знает какои то open sourse project на ету тему поделитесь ссилочкои
спасибо
Re: javascript debuger
От: Воронков Василий Россия  
Дата: 16.04.04 21:17
Оценка: +1
Здравствуйте, RobinHood, Вы писали:

RH>привет!

RH>может кто небудь посоветует как делаеть debug javascript.
RH>понимаю что можно делать что то типа алерт и вызывать в функции. но что делать если
RH>функция возврашает object. неужели нет никакой возможности делать дебаг на клиентскои
RH>стороне(имею доступ практически к любым средствам разработки vs7,6. может dot.net ето делает???)...
RH> если кто знает какои то open sourse project на ету тему поделитесь ссилочкои
RH>спасибо


В VS7 вообще есть дебагер скриптов. Есть еще и Microsoft Script Editor.
Re: javascript debuger
От: ЖуК Украина http://smart-ip.net/
Дата: 16.04.04 23:48
Оценка: 63 (6) +1
Здравствуйте, RobinHood, Вы писали:

RH>привет!

RH>может кто небудь посоветует как делаеть debug javascript.
RH>понимаю что можно делать что то типа алерт и вызывать в функции. но что делать если
RH>функция возврашает object. неужели нет никакой возможности делать дебаг на клиентскои
RH>стороне(имею доступ практически к любым средствам разработки vs7,6. может dot.net ето делает???)...
RH> если кто знает какои то open sourse project на ету тему поделитесь ссилочкои
RH>спасибо

1. Microsoft Visual Studio .NET точно умеет — сам видел
2. Mozilla. Имеет JavaScript Console + DOM Inspector
3. А можно и самому сделать дебаггер (для любителей всё сделать своими руками) :

например, вот такой:

/**
* Класс jsDump для отладки
*
* @author Mikhail Stadnik aka }|{yK <root@autoweb.ws>
* @copyright (c) 2004
*/
function jsDump() {
    this.strDump = '';
    this.wnd = window.open( 'about:blank');
}

/**
* Делает "мгновенный снимок" HTML. 
* Это может быть полезно когда мы динамически изменяем
* HTML страницы и хотим посмотреть, на чо он похож в какой то определенный момент.
*/
jsDump.prototype.dumpHTML = function() {
    if (navigator.appName == 'Netscape') {
        this.strDump = '<HTML>' + document.getElementsByTagName( 'HTML').item(0).innerHTML + '</HTML>';
    } else {
        this.strDump = document.getElementsByTagName( 'HTML').item(0).outerHTML;
    }
    this.wnd.document.write( '<pre style="font-family: Courier;">' + this.strDump.html2view() + '</pre><HR size="1px">');
    this.strDump = '';
}

/**
* Распечатывает переменную. 
* Нужно отнестись с пониманием к работе данной функции и учитывать,
* что она абсолютно бесполезна в тех случаяк, когда с ёё помощью производится
* попытка "отдампить" объект, содержащий рекурсивные ссылки объектов на самих себя 
* (эт такие объекты, как window, document, document.body и т.п.), так как это приведет
* к stack overflow at line xxx, потому что мы никак не сможем выйти из рекурсии
* Зато можеть быть полезной при попытке "отдампить" какие-то свои объекты, или,
* например, такой объект, как document.body.style
*
* З.Ы. Виду позднего времени (безумно хочется спать) нет желания сию минуту решить
* проблемму с рекурсией объектов. Возможно оно не появится и завтра :) Поэтому
* буду благодарен, если кто-то своим наметанным глазом увидит и подскажет всем остальным,
* как обойти данную проблемму...
*/
jsDump.prototype.dumpVar = jsDump_dumpVar;
function jsDump_dumpVar( _var, rem) {
    this.strDump += '<i style="color: #0000FF;">' + typeof( _var) + '</i> <b>=</b> ';
    switch ( typeof(_var)) {
        case 'object': {
            this.strDump += ' {<blockquote>';
            for (var i in _var) {
                this.strDump += '[<b>' + i + '</b>] ';
                this.dumpVar( _var[i], true);
            }
            this.strDump += '</blockquote>}<br>';
            break;
        }
        default: {
            var addStr = typeof( _var) == 'string' ? '&quot;' : '';
            this.strDump += addStr + _var.toString().html2view() + addStr + '<br>';
            break;
        }
    }
    if (!rem) {
        this.wnd.document.write( '<pre style="font-family: Courier;">' + this.strDump + '</pre><hr size="1px">');
        this.strDump = '';
    }
}

/**
* А это просто безумно хитрая приблуда :D 
* Угадайте - что она делает?
*/
String.prototype.html2view = function() {
    return this.replace( /&/g, '&amp;').replace( /</g, '&lt;').replace( />/g, '&gt;');
}

// Пример использования
var var1 = 'Blablabla';
var var2 = new Array(1, 2, 3, 4, 5, 6, 7, 'Blablabla');
var var3 = new Object();
var3.gg = var2;
var3.rr = 'Hahaha';
var3.cc = 4.236;
var3.ii = 456875;
var dd = new jsDump();
dd.dumpVar( var1);
dd.dumpVar( var2);
dd.dumpVar( var3);
dd.dumpVar( document.body.style);
dd.dumpHTML();


Думаю, что alert() + jsDump в большинстве случаев будет достаточно (если под рукой не оказалось путёвого дебаггера)
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[2]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 18.04.04 02:49
Оценка:
Вот наваял новую версию, в которой устранен глюк с рекурсией объектов
В принципе, мне самому даже понравилось Очень удобно тем, что этот дебагер не привязан к какому-то браузеру. Правда тестил только в ИЕ 6 и Мозилла 1.6. Так вот дампим одно и то же но в разных браузерах — сразу же можно искать отличия, посмотреть какие свойства, методы и т.п. присущи одному и тому же объекто в одном браузере, какие в другом...

Вообщем предлагаю глянуть всем, кому это интересно. Клацайте мышкой на объекты с фигурными скобками, чтобы их раскрывать. Пример работы дебаггера здесь.

Исходник дебагерра:

/**
* Класс jsDump для отладки
*
* @author Mikhail Stadnik aka }|{yK <root@autoweb.ws>
* @copyright (c) 2004
*/
function jsDump() {
    this.wnd = window.open( '');
    this.doc = this.wnd.document;
    this.entries = new Array();
    this.pre = this.doc.createElement( 'PRE');
    this.doc.body.appendChild( this.pre);
    this.variable = null;
    this.dumpString = new String();
}

/**
* Распечатывает переменную. 
* Дампит все возможные переменные. Если в переменной есть вложенность 
* объектов - дампит по частям, требует от пользователя инициализации
* распечатки следующего блока
*/
jsDump.prototype.dumpVar = jsDump_dumpVar;
function jsDump_dumpVar( variable, oEntryPoint, name) {
    var oEntryPoint = oEntryPoint || this.pre;
    var oCaption = this.doc.createElement( 'SPAN');
    oEntryPoint.appendChild( oCaption);
    switch (typeof( variable)) {
        case 'object': {
            var idPrfx = this.entries.length;
            var eI = this.doc.createElement( 'I');
            eI.style.color = "navy";
            eI.appendChild( this.doc.createTextNode( typeof( variable) + " "));
            oCaption.appendChild( eI);
            var eB = this.doc.createElement( 'B');
            eB.appendChild( this.doc.createTextNode( (name ? name : variable) + " = "))
            oCaption.appendChild( eB);
            if (variable != null) {
                oCaption.appendChild( this.doc.createTextNode( "{"));
                var oBlock = this.doc.createElement( "BLOCKQUOTE");
                oBlock.setAttribute( 'id', 'oBlock' + idPrfx);
                this.entries[idPrfx] = oBlock.getAttribute( 'id');
                oCaption.setAttribute( 'id', 'oCaption' + idPrfx);
                oCaption.style.cursor = navigator.appName == 'Netscape' ? 'pointer' : 'hand';
                oEntryPoint.appendChild( oBlock);
                oEntryPoint.appendChild( this.doc.createTextNode( "}"));
                oEntryPoint.appendChild( this.doc.createElement( "BR"));
                var __js__dd = this;
                oCaption.onclick = function() {
                    for (var i in variable) {
                        __js__dd.dumpVar( variable[i], oBlock, i);
                    }
                    this.style.cursor = '';
                    this.style.backgroundColor = '#EEEEEE';
                    this.onclick = '';
                }
            } else {
                var oBlock = this.doc.createTextNode( variable);
                oEntryPoint.appendChild( oBlock);
                oEntryPoint.appendChild( this.doc.createElement( "BR"));
            }
            break;
        }
        default: {
            var eI = this.doc.createElement( 'I');
            eI.style.color = "navy";
            eI.appendChild( this.doc.createTextNode( typeof( variable) + " "));
            oEntryPoint.appendChild( eI);
            var eB = this.doc.createElement( 'B');
            eB.appendChild( this.doc.createTextNode( name + " = "))
            oEntryPoint.appendChild( eB);
            oEntryPoint.appendChild( this.doc.createTextNode( variable));
            oEntryPoint.appendChild( this.doc.createElement( "BR"));
            break;
        }
    }
}

/**
* Делает "мгновенный снимок" HTML. 
* Это может быть полезно когда мы динамически изменяем
* HTML страницы и хотим посмотреть, на чо он похож в какой то определенный момент.
*/
jsDump.prototype.dumpHTML = function() {
    if (navigator.appName == 'Netscape') {
        this.dumpString = '<HTML>' + document.getElementsByTagName( 'HTML').item(0).innerHTML + '</HTML>';
    } else {
        this.dumpString = document.getElementsByTagName( 'HTML').item(0).outerHTML;
    }
    this.pre.appendChild( this.doc.createElement( 'HR'));
    this.pre.appendChild( this.doc.createTextNode( this.dumpString));
    this.dumpString = '';
}

// Пример использования
var dd = new jsDump();
dd.dumpVar( document);
dd.dumpHTML();
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[3]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 19.04.04 10:35
Оценка:
Так как со временем всплывают всякие глюки, исходники меняются.
На свежую версию исходников вы можете посмортеть здесь
Для того, чтобы скачать исходники жмите сюда
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[4]: javascript debuger на javascript
От: uzzy Россия  
Дата: 20.04.04 18:33
Оценка: 9 (1)
Здравствуйте, ЖуК, Вы писали:

ЖуК>Так как со временем всплывают всякие глюки, исходники меняются.

ЖуК>На свежую версию исходников вы можете посмортеть здесь
ЖуК>Для того, чтобы скачать исходники жмите сюда

Слегка поколдовал над твоим творением.
1. Сделал наглядное (цветовое) выделение раскрываемых нодов
2. Сделал сворачивание, разворачивание нодов.

Забрать можно отсюда
RSDN@Home 1.1.3 stable
Re[5]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 05:29
Оценка: +1
Здравствуйте, uzzy, Вы писали:

U>Слегка поколдовал над твоим творением.


Спасибо, uzzy! Если честно, я как раз и надеялся на то, что кто-то подхватит идею — она не так уж и бесполезна!

З.Ы. Я обновил исходники у себя, так что все теперь могут посмотреть на них, ссылки были приведены в предыдущих постах. Для очень ленивых напомню.

Пример здесь
Исходник здесь
Качать отсюда или отсюда
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[5]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 05:53
Оценка:
Здравствуйте, uzzy, Вы писали:

U>Слегка поколдовал над твоим творением.

U>1. Сделал наглядное (цветовое) выделение раскрываемых нодов
U>2. Сделал сворачивание, разворачивание нодов.

U>Забрать можно отсюда


Я немного переделал так, чтобы работало в Mozilla. Все ссылки в предыдущем посте
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[6]: javascript debuger на javascript
От: uzzy Россия  
Дата: 21.04.04 06:39
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>Спасибо, uzzy! Если честно, я как раз и надеялся на то, что кто-то подхватит идею — она не так уж и бесполезна!

я то и ее подхватил, когда под рукой было только notepad, и отлаживать alert-ами задолбался . В общем если у меня еще появятся идеи, то реализация за мной не застоит.
Re[6]: javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.04.04 07:04
Оценка: 16 (2)
Здравствуйте, ЖуК, Вы писали:

ЖуК>Я немного переделал так, чтобы работало в Mozilla. Все ссылки в предыдущем посте


кстати, в Mozilla этод:
if (!this.doc.body) {
    this.doc.body = this.doc.createElement( 'BODY');
    this.doc.getElementsByTagName( 'HTML').item(0).appendChild( this.doc.body);
}

можно заменить этим:
this.doc.open();
this.doc.close();

тогда минимальный документ будет создан автоматически, соответственно там будет и пустой <body>... возможно это прокатит и в других браузерах — не проверял...
Re[6]: javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.04.04 07:57
Оценка: 20 (3)
Здравствуйте, ЖуК, Вы писали:

ЖуК>З.Ы. Я обновил исходники у себя, так что все теперь могут посмотреть на них, ссылки были приведены в предыдущих постах. Для очень ленивых напомню.


ЖуК>Пример здесь

ЖуК>Исходник здесь
ЖуК>Качать отсюда или отсюда

есть такая идея (проверил — работает):
в bookmark'ах создается закладка со следующим содержанием:
javascript:var v=window.prompt();var dd=new jsDump();dd.dumpVar(eval(v));

тогда если в отлаживаемую страницу вставить скрипт:
...
<script language="JavaScript" type="text/javascript" src="/path/to/jsdump.js">
...

при нажатии на эту закладку появится окошко с приглашением ввести имя переменной/объекта, и далее, после ввода, отобразится дамп этой переменной/объекта... по моему весьма удобно...

я думаю скрипт в закладке можно даже переработать так, что саму в саму страницу ничего не нужно будет дописывать... а скрипт будет присоединяться динамически...
Re[7]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 08:04
Оценка:
Здравствуйте, anonymous, Вы писали:

[skiped]

A>тогда минимальный документ будет создан автоматически, соответственно там будет и пустой <body>... возможно это прокатит и в других браузерах — не проверял...


Спасибо, anonymous! Правда в Опере упорно не желает работать ни так, ни так...

В дополнение добавлю, что кроме изменения, предложенного товарищем anonymous я сделал возможность не показывать переменные, которые равны null || undefined, и так теперь по-умолчанию
Появилось свойство jsDump::showEmpty и метод jsDump::showEmptyVars( needShow), который как раз и предназначен для того, чтобы задавать это свойство
Мало того, метод jsDump::dumpVar() вторым параметром теперь тоже принимает флаг showEmpty приоритет которого будет выше, чем у jsDump::showEmpty
Таким образом мы можем теперь управлять выводом нулл переменных (зачастую они не нужны и скорость отработки без их вывода увеличивается)
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[7]: javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.04.04 08:50
Оценка:
вот код закладки с подгрузкой скрипта, если его нет на странице:
javascript:var w=window;if (w.jsDump==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)};var v=w.prompt('Enter object name:');var dd=new jsDump();dd.dumpVar(eval(v));

но есть проблема, если скрипт не успел подгрузиться, то будет ошибка... ищем решение...

P.S. Жук, ничего что скрипт пользователи с твоего сайта подгружать будут?...
Re[8]: javascript debuger на javascript
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 21.04.04 09:03
Оценка: +1 :)
Здравствуйте, anonymous, Вы писали:


A>вот код закладки с подгрузкой скрипта, если его нет на странице:

A>
A>javascript:var w=window;if (w.jsDump==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)};var v=w.prompt('Enter object name:');var dd=new jsDump();dd.dumpVar(eval(v));
A>

A>но есть проблема, если скрипт не успел подгрузиться, то будет ошибка... ищем решение...

Решения:
1. В конце скрипта выставляем глобальную переменную. В закладке в цикле проверяем ее на существование
2. Все, что должно вызыватся после загрузки скрипта ложим в функцию. В скрипте в конце ее вызываем.
3. В цикле после начала загрузки скрипта проверяем его состояние.

A>P.S. Жук, ничего что скрипт пользователи с твоего сайта подгружать будут?...
King Oleg
*Читайте DOC'и, они rules*
Re[8]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 09:05
Оценка:
Здравствуйте, anonymous, Вы писали:


A>вот код закладки с подгрузкой скрипта, если его нет на странице:

A>
A>javascript:var w=window;if (w.jsDump==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)};var v=w.prompt('Enter object name:');var dd=new jsDump();dd.dumpVar(eval(v));
A>


A>но есть проблема, если скрипт не успел подгрузиться, то будет ошибка... ищем решение...


Решаем проблемму

javascript:var w=window; if (w.jsDump==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)}; while(!JS_DUMP_LOADED) { try { var dd=new jsDump(); } catch(err) { continue; }} var v=w.prompt('Enter object name:'); dd.dumpVar(eval(v));


Только протестить сейчас не могу... Вообщем такова идея, возможно при реализации нужно будет добавить задержку по времени в цикл...
Намекни, если заработает

A>P.S. Жук, ничего что скрипт пользователи с твоего сайта подгружать будут?...


Ничего страшного — все нормально
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[9]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 09:08
Оценка:
Здравствуйте, King Oleg, Вы писали:

KO>Решения:

KO>1. В конце скрипта выставляем глобальную переменную. В закладке в цикле проверяем ее на существование
KO>2. Все, что должно вызыватся после загрузки скрипта ложим в функцию. В скрипте в конце ее вызываем.
KO>3. В цикле после начала загрузки скрипта проверяем его состояние.

Клево, пока ты писал идею я писал ее реализацию и чуть позже тебя запостил — бывает же так
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[4]: [wish] javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.04.04 10:17
Оценка:
есть предложение: в дампе значения объектов String заключать в кавычки для наглядности...
Re[5]: [wish] javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 10:22
Оценка:
Здравствуйте, anonymous, Вы писали:


A>есть предложение: в дампе значения объектов String заключать в кавычки для наглядности...


No problem! Пользуйтесь наздоровье
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[8]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 11:16
Оценка:
Здравствуйте, anonymous, Вы писали:

A>но есть проблема, если скрипт не успел подгрузиться, то будет ошибка... ищем решение...


Уже нету проблемы. Вот код, который все решает:

javascript:var w=window;var JS_DUMP_LOADED;if (w.jsDump==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)};var oInterval;function onScriptLoad(){if(JS_DUMP_LOADED){var v=w.prompt( 'Enter object name:', '');if(v){var dd=new jsDump();dd.dumpVar(eval(v));}clearInterval(oInterval);}else{oInterval=setInterval("onScriptLoad()", 1000);}};onScriptLoad();


Проверено в Mozilla 1.6, IE 6.0
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[9]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 11:33
Оценка:
A>>но есть проблема, если скрипт не успел подгрузиться, то будет ошибка... ищем решение...

ЖуК>Уже нету проблемы. Вот код, который все решает:


Хотя с практической точки зрения эта фича нифиг не нужна
Потому что нам нужно дампить нечто в какой-то момент, а в данном случае мы дампим конечный результат. Хотя ингода и это нужно...
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[9]: javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.04.04 12:08
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>Уже нету проблемы. Вот код, который все решает:


ЖуК>
ЖуК>javascript:var w=window;var JS_DUMP_LOADED;if (w.jsDump==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)};var oInterval;function onScriptLoad(){if(JS_DUMP_LOADED){var v=w.prompt( 'Enter object name:', '');if(v){var dd=new jsDump();dd.dumpVar(eval(v));}clearInterval(oInterval);}else{oInterval=setInterval("onScriptLoad()", 1000);}};onScriptLoad();
ЖуК>


ЖуК>Проверено в Mozilla 1.6, IE 6.0


мой код:
javascript:function f(){if(w.JS_DUMP_LOADED){var v=w.prompt('Enter object name:','');if(v){var d=new jsDump();d.dumpVar(eval(v))}}else{setTimeout(f,500)}}var w=window;if(w.JS_DUMP_LOADED==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)}f()

но для него нужно чтобы JS_DUMP_LOADED была обявлена в самом файле:
var JS_DUMP_LOADED = true;
Re[10]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 15:17
Оценка:
Здравствуйте, anonymous, Вы писали:

A>но для него нужно чтобы JS_DUMP_LOADED была обявлена в самом файле:

A>
var JS_DUMP_LOADED = true;


Так она там уже давно объявлена!
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[10]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 21.04.04 15:53
Оценка: 18 (1)
И последний штришок для придания завершенности:

javascript:function f(){if(w.JS_DUMP_LOADED){var v=w.prompt('Enter object name:','');if(v){var c=w.confirm( 'Do you want to see NULL-variables?');var d=new jsDump();d.dumpVar(eval(v),c);}}else{setTimeout(f,500)}}var w=window;if(w.JS_DUMP_LOADED==undefined){var d=w.document;var s=d.createElement('script');s.src='http://scripts.kiev.ua/scripts/jsdump.js';d.body.appendChild(s)}f()
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[11]: javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.04.04 16:11
Оценка: +1
поигрался этой штукой на RSDN.ru, жуткое количество скриптов... )
Re[11]: javascript debuger на javascript
От: uzzy Россия  
Дата: 22.04.04 04:23
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>И последний штришок для придания завершенности:


...

Понять не могу, то ли дома машина быстрая, то ли я не знаю.
В общем скачал последнюю версию, открываю в IE вылетает с ошибкой мол, нету такого проперти или объекта в стр. 12.
Пытаюсь в дебаге прогнать все нормально.
На работе проверил ошибки нет, не вылетает.
В Mozille и дома и на работе все пучком.

Кстати по Опере, попробовал первоначальный вариант дампера — все нормально Опера показывает (Опера 7.1).
Re[12]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 22.04.04 07:07
Оценка:
Здравствуйте, uzzy, Вы писали:

U>Кстати по Опере, попробовал первоначальный вариант дампера — все нормально Опера показывает (Опера 7.1).


В настоящем варианте она ругается на this.doc.body — говорит null или undefined
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[13]: javascript debuger на javascript
От: uzzy Россия  
Дата: 22.04.04 07:24
Оценка:
Здравствуйте, ЖуК, Вы писали:

U>>Кстати по Опере, попробовал первоначальный вариант дампера — все нормально Опера показывает (Опера 7.1).


ЖуК>В настоящем варианте она ругается на this.doc.body — говорит null или undefined

знаю
Re[14]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 22.04.04 07:58
Оценка:
Здравствуйте, uzzy, Вы писали:

U>Здравствуйте, ЖуК, Вы писали:


U>>>Кстати по Опере, попробовал первоначальный вариант дампера — все нормально Опера показывает (Опера 7.1).


ЖуК>>В настоящем варианте она ругается на this.doc.body — говорит null или undefined

U>знаю

Йоу! Я ее вылечил мля!!!

Рассказываю. Вначале я все тестил под ИЕ и писал

this.wnd = window.open( 'about:blank');


В Mozilla это упорно не хотело работать. Точнее все работает, но нифига не отображается. Экспериментальным путем установил ("метод научного тыка" ), что это связано с урлом about:blank. Когда такой урл она, собака бланк тебе и все тут! Что ты ни делай — создавай ноды — нифига не показует. Канает только document.write....

А ослик работает и так и так...

А вот Опера, если открывает окно с пустым урлом, то оно бланк по полной программе — в нем даже элемента HTML нету! Поэтому пришлось сделать вот так:


this.wnd = window.open( '', '', 'scrollbars=yes, toolbar=no, location=no, status=no, menubar=no, width=800, height=600, resizable=yes');
if (!this.wnd.document.body) {
    this.wnd.location = 'about:blank';
}


И теперь все фунцикулирует
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[15]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 22.04.04 08:10
Оценка: :)
АААААА! Блин! Не то протестил и нарассказывал ерунды — не работает она так гадина...
работает только вот так


this.wnd = window.open( '', '', 'scrollbars=yes, toolbar=no, location=no, status=no, menubar=no, width=800, height=600, resizable=yes');
if (!this.wnd.document.body) {
    this.wnd.close();
    this.wnd = window.open( 'http://scripts.kiev.ua/scripts/blank.html', '', 'scrollbars=yes, toolbar=no, location=no, status=no, menubar=no, width=800, height=600, resizable=yes')
}


Вот гадина... обязательно ей документ подовывай иначе никак... может у кого-нибудь есть какие-нибудь соображения по этому поводу?
А то не нравится мне что-то этот урл на реальный файл...
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[15]: javascript debuger на javascript
От: uzzy Россия  
Дата: 22.04.04 08:11
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>И теперь все фунцикулирует

Нифига в Opera 7.23 Build 3227 не фунциклирует
Re[16]: javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.04.04 10:06
Оценка:
Здравствуйте, uzzy, Вы писали:

ЖуК>>И теперь все фунцикулирует

U>Нифига в Opera 7.23 Build 3227 не фунциклирует

а как на счет этого:
    this.wnd = window.open( '', '', 'scrollbars=yes, toolbar=no, location=no, status=no, menubar=no, width=800, height=600, resizable=yes');
    this.doc = this.wnd.document;
    if (!this.doc.body) {
        this.doc.open();
        this.doc.write('<html><body></body></html>');
        this.doc.close();
    }
Re[17]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 23.04.04 10:15
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Здравствуйте, uzzy, Вы писали:


ЖуК>>>И теперь все фунцикулирует

U>>Нифига в Opera 7.23 Build 3227 не фунциклирует

A>а как на счет этого:

A>
A>    this.wnd = window.open( '', '', 'scrollbars=yes, toolbar=no, location=no, status=no, menubar=no, width=800, height=600, resizable=yes');
A>    this.doc = this.wnd.document;
A>    if (!this.doc.body) {
A>        this.doc.open();
A>        this.doc.write('<html><body></body></html>');
A>        this.doc.close();
A>    }
A>


Неа — не работает...
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[18]: javascript debuger на javascript
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.04.04 10:55
Оценка: 9 (2)
Здравствуйте, ЖуК, Вы писали:

ЖуК>Неа — не работает...


тогда это:
http://www.kruglov.ru/articles/nontrivialjs/#windowprint
Re[19]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 23.04.04 12:47
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Здравствуйте, ЖуК, Вы писали:


ЖуК>>Неа — не работает...


A>тогда это:

A>http://www.kruglov.ru/articles/nontrivialjs/#windowprint

к сожалению... увы, не работает
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[19]: javascript debuger на javascript
От: ЖуК Украина http://smart-ip.net/
Дата: 23.04.04 14:51
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Здравствуйте, ЖуК, Вы писали:


ЖуК>>Неа — не работает...


A>тогда это:

A>http://www.kruglov.ru/articles/nontrivialjs/#windowprint

За ссылочку — спасибо
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re: javascript debuger
От: Rumata Россия http://atamur.livejournal.com
Дата: 16.08.04 16:07
Оценка:
Up!

Все ссылки умерли. Не могли бы участники обсуждения их подновить?
Re[2]: javascript debuger
От: ЖуК Украина http://smart-ip.net/
Дата: 17.08.04 13:50
Оценка: 8 (1)
Здравствуйте, Rumata, Вы писали:

R>Up!


R>Все ссылки умерли. Не могли бы участники обсуждения их подновить?


Ох, насчёт всех незнаю, но вот эта должна теперь заработать. Но её по идее должно хватить...
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[3]: javascript debuger
От: Rumata Россия http://atamur.livejournal.com
Дата: 17.08.04 15:03
Оценка:
Здравствуйте, ЖуК, Вы писали:

R>>Все ссылки умерли. Не могли бы участники обсуждения их подновить?

ЖуК>Ох, насчёт всех незнаю, но вот эта должна теперь заработать. Но её по идее должно хватить...
Шаман, однако, вчера вроде в такую же тыкал выше по ветке — 404 получил.
Re[4]: javascript debuger
От: ЖуК Украина http://smart-ip.net/
Дата: 17.08.04 15:07
Оценка:
Здравствуйте, Rumata, Вы писали:

R>Шаман, однако, вчера вроде в такую же тыкал выше по ветке — 404 получил.


_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[5]: javascript debuger
От: Аноним  
Дата: 16.07.06 19:53
Оценка:
Здравствуйте, ЖуК

а можно ли оживить тему и увидеть что получилось в результате из этого скрипта? а то все ссылки-то мертвые...
Re[2]: javascript debuger
От: mogadanez Чехия  
Дата: 17.07.06 11:29
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>3. А можно и самому сделать дебаггер (для любителей всё сделать своими руками) :


ЖуК>например, вот такой:


а еще можно заюзать JsShell

вещь рулезная. например в ASP.NET я использую такой код:
protected override void         Render(HtmlTextWriter writer)
    {
    base.Render( writer )
    bool js_shell =  config.bool_( settings.js_shell, false );
    if ( js_shell )
            {
            HttpContext.Current.Response.Write( resource_reader.load_string_debug( "js_shell.js", "metacomm.webcontrols.templates.js_shell.js, metacomm.webcontrols" ) );
            }
    }


Если в конфиге включено дописывает код Шела в конец каждой страницы — очень удобно для отладки скриптов.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.