Отладка JS в Opera

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Отладка JS в Opera

Post by Lavr »

JavaScript стал популярным последнее время и отладчики JS в современные браузеры
встроены.

Оказалось, и в моей не самой новой "Opera-9.64" под Вендой-98 отладчик JS также
предусмотрен...

И он носит название Opera Dragonfly.
Opera Dragonfly – полнофункциональный набор средств разработчика, предназначенных
для упрощения вашей работы. На расстоянии одного щелчка правой кнопкой мыши от вас.
Ну правой кнопкой мыши - я не справился... видимо, затупил... :wink:
А вот с трёх кнопок клавиатуры: Ctrl + Shift + I отладчик Dragonfly
у меня запустился, чем сначала порадовал! :roll:

Но потом выяснилось что онлайновый он... что несколько огорчило, но ненадолго.
Не один я люблю иметь инструменты при себе на диске, поэтому решение уже
было найдено: Opera Dragonfly оффлайн.

Суть его проста и заключается в том, что в папке C:\...\Opera\ создается дополнительная
папка C:\...\Opera\dragonfly\, а в ней - ещё две папки:
C:\...\Opera\dragonfly\script и
C:\...\Opera\dragonfly\style.

Чтобы было более понятно - у меня это вот так, поскольку Opera у меня мобильная:
C:\Opera964ru\dragonfly
C:\Opera964ru\dragonfly\script
C:\Opera964ru\dragonfly\style

Теперь в эти папки надо полжить соответственно загрузчик Dragonfly, сам
JS-отладчик Dragonfly и стили.

Opera автоматически делает это с адреса:
https://dragonfly.opera.com/app/
причем там происходит перенаправление по версиям.

Для Opera-9.64 надо загрузить в папку C:\Opera964ru\dragonfly файл:
https://dragonfly.opera.com/app/core-2-1/client-ru.xml

В папку C:\Opera964ru\dragonfly\script загружаем:
https://dragonfly.opera.com/app/core-2- ... nfly-ru.js

В папку C:\Opera964ru\dragonfly\script загрузим:
https://dragonfly.opera.com/app/core-2- ... gonfly.css

Для Opera старших версий - адреса другие:
В папку C:\Opera964ru\dragonfly - файл:
https://dragonfly.opera.com/app/core-2-2/client-ru.xml

В папку C:\Opera964ru\dragonfly\script загружаем:
https://dragonfly.opera.com/app/core-2- ... nfly-ru.js

В папку C:\Opera964ru\dragonfly\script загрузим:
https://dragonfly.opera.com/app/core-2- ... gonfly.css

Далее - надо указать Opere, откуда ей брать Dragonfly в офф-лайне, вводим ссылку:
настройки opera:config#DeveloperTools|DeveloperToolsURL
и в настройках ведём путь
к загрузчику (на моём примере):
file://localhost/C:/Opera964ru/dragonfly/client-ru.xml

В других случаях:
file://localhost/C:/Program%20Files/Opera/dragonfly/client-ru.xml

Если у вас Opera расположена иначе, то путь скорректируйте.
Operу надо перезагрузить, нажать Ctrl + Shift + I и счастье произойдёт! :roll:

Image
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Ну и если счастье у вас не случилось (а у меня оно не случилось :lol: ) то пару
слов о том, как счастья от Opera Dragonfly в офф-лайне добиться...

Ну поскольку путь запуска загрузчика client-ru.xml мы записали:
file://localhost/C:/Opera964ru/dragonfly/client-ru.xml
то он, конечно же, загрузится... :-? А вот дальше - нифига...

Я недолго смотрел на это "нифига" и заглянул в текст client-ru.xml, где есть
две нужные строки:

Code: Select all

<link rel="stylesheet" href="./style/dragonfly.css"/>
<script src="./script/dragonfly-ru.js"/>
Ну кто разбирается, что здесь к чему, и относительно какой папки действуют эти пути,
может проделать разные эксперименты сам...

Но в итоге я исправил эти строки сначала вот так:

Code: Select all

<link rel="stylesheet" href="file://localhost/C:/Opera964ru/dragonfly/style/dragonfly.css"/>
<script src="file://localhost/C:/Opera964ru/dragonfly/script/dragonfly-ru.js"/>
А потом и проще - достал dragonfly-ru.js и dragonfly.css из своих папок
и сложил рядом с client-ru.xml в директории:
C:/Opera964ru/dragonfly/, а сами папки script и style удалил...

После этого "счастье" запуска Opera Dragonfly в офф-лайне реализовалось
вот так:

Code: Select all

<link rel="stylesheet" href="file://localhost/C:/Opera964ru/dragonfly/dragonfly.css"/>
<script src="file://localhost/C:/Opera964ru/dragonfly/dragonfly-ru.js"/>
Ну и если у Вас всё получилось - успешной отладки! :wink:

Image



PS. Ну а кто никогда JS не отлаживал, то простенькая стартовая информация здесь и здесь...
iLavr
User avatar
He3HauKo
Senior
Posts: 176
Joined: 09 Aug 2012 11:20
Location: 95.135.174.189

Post by He3HauKo »

Давно пользуюсь Dragonfly'ом, до появления "трудной" капчм на депозите занимался автокликерами. Но как то об оффлайн версий и не думал. Благодарю за полезною наводку :kruto:
Хочу стать всезнайкой ;-)
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Опера переходит на WebKit - теперь это будет одна фигня с Safari, Chrome и всякими Konqueror...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos - вот такой вопрос возник...
Если эмулятор на JavaScript запускается локально на диске и нет коннекта с интернетом
в этот момент, откуда можно подгрузить в него тексты ассемблерных программ (они есть)?

И если возможность прямо по ходу дела что-то добавить в список ассемблерных программ?
iLavr
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

да наверное ниоткуда

в каком-то одном браузере вроде бы есть класс File для работы с локальными файлами, но я сомневаюсь что интересующий тебя ассемблер вообще знает о том, что его могут запускать локально :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:да наверное ниоткуда
А если у меня на диске установлен локальный мини-сервер - это проблему никак не поправит?

(при работе с J2ME он как-то понадобился порешать что-то похожее...)
iLavr
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

надо в скрипт смотреть - может и получится
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:надо в скрипт смотреть - может и получится
Я решил с сервером не морочиться и загнал их в текст скрипта:

Code: Select all

 if(file == "noise.asm") {
  document.getElementById( "code" ).value = "; static noise\nstart: ldy #$ff\n       ldx #$0\nloop:  lda $fe\n       sta $200,x\n       and #$7\n       sta $300,x\n       and #$3\n       sta $400,x\n       and #$1\n       sta $500,x\n       inx\n       dey \n       bne loop\n       rts\n";
    file = "";
   }
Хотел без "\n " обойтись, чтобы не расставлять их вручную, но пишут, что

Code: Select all

var random = <> 
;     random.asm
loop: lda $fe       ; A=rnd
      sta $00       ; ZP(0)=A
      lda $fe
      and #$3       ; A=A&3
      clc           ; Clear carry
      adc #$2       ; A+=2
      sta $01       ; ZP(1)=A
      lda $fe       ; A=rnd
      ldy #$0       ; Y=0
      sta ($00),y   ; ZP(0),ZP(1)=y
      jmp loop
</>.toString();

не везде правильно работает...
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos - ещё такой вот вопрос по ходу случился...

А как JavaScript в принципе должен реагировать на ошибку?
У меня - перестаёт выполнять скрипт, начиная с места ошибки...

Вот в облюбованном мной эмуляторе 6502: http://www.6502asm.com/
авторы сами заглушили комментарием одну кнопку, но в скрипте дают команду
сделать её неактивной.
На этом месте у меня выполнение скрипта останавливается.

Но, похоже, что у них не так... ибо вывесили с багом: http://www.6502asm.com/ :(
iLavr
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Сайтов с ошибками JS в интернете масса (или может в одних браузерах работает, а в других - сбоит?)
В большинстве случаев браузер как-то изображает что случилась ошибка, но скрипт тем не менее пытается работать дальше - вроде так...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:в каком-то одном браузере вроде бы есть класс File для работы с локальными файлами...
В общем локальный файл нормально втаскивается в iframе...

Code: Select all

<iframe id="frame" src='file://localhost/C:/.../6502%20A/examples/adventure.asm' width=380 height=260 >

а потом его можно скопировать в переменную:

Code: Select all

var linkedFrame = document.getElementById("frame");
var content = linkedFrame.contentWindow.document.body.innerHTML;
А эту переменную уже использовать в программе ассемблера.

То тут, блин, какая-то засада случается...
Все *.asm-файлы по сути текстовые и втягиваются в iframе нормально:

Image

Как я понял, браузер просто автоматом подставляет перед текстовыми файлами:

Code: Select all

<pre>
а вот 
</pre> - в конце не ставит...
Но один единственный файл почему-то при загрузке портится... :(
http://www.6502asm.com/examples/adventure.asm

Image

Code: Select all

<pre> браузер в его начале не ставит...
Совершенно непонятно - почему...

Если добавить к файлу искуственно

Code: Select all

<pre>
...
</pre>
Форматирование внешне не портится, но портится при копировании...
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Есть у меня подозрение, что шибко длинные строки портят формат в iframе...

Code: Select all

screen_data:
;   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31
dcb $55,$55,$55,$55,$55,$dd,$dd,$55,$dd,$99,$d9,$d9,$99,$99,$99,$99,$99,$99,$99,$99,$9d,$d9,$99,$dd,$55,$dd,$dd,$55,$55,$55,$55,$55 ; $00 Forest, E/W Path
dcb $55,$d9,$9d,$55,$55,$99,$9d,$55,$5d,$99,$9d,$d5,$5d,$99,$99,$d5,$5d,$9d,$99,$d5,$5d,$99,$99,$d5,$55,$d9,$99,$55,$55,$d9,$9d,$55 ; $01 Forest, N/S Path
...
dcb $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$ff,$fb,$bb,$ff,$ff,$ff,$ff,$bb,$ff,$fb,$bb,$bb,$bf,$bb,$bb,$bb,$bf,$bb,$bb,$bb,$bf,$bb,$bb ; $4f Black, S/E/W
dcb $bb,$bf,$bb,$bb,$bb,$bf,$bb,$bb,$bb,$ff,$fb,$bb,$ff,$ff,$ff,$ff,$bb,$ff,$fb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb ; $50 Black, N/E/W
dcb $bb,$bf,$bb,$bb,$bb,$bf,$bb,$bb,$bb,$ff,$fb,$bb,$ff,$ff,$ff,$ff,$bb,$ff,$fb,$bb,$bb,$bf,$bb,$bb,$bb,$bf,$bb,$bb,$bb,$bf,$bb,$bb ; $51 Black, N/E/S/W
Last edited by Lavr on 23 Dec 2014 15:33, edited 1 time in total.
iLavr
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

А innerText вместо innerHTML не работает? Вроде бы как логичнее именно его использовать.
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Интересный трюк - проверил на фаерфоксе - работает :)

И кстати innerText чего-то нету такого, а innerHTML таки да - возвращает "<pre>внутренности файла..."

Надо чтоли этот трюк за уши подтянуть к моей либе Webitable.js ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net