Как отлаживать JavaScript в DukeScript

Можно ли отлаживать JavaScript при использовании DukeScript? Я пытался добавить FirebugLite

<script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>

Он загружается, и это замечательно, но он не видит модель $root. Также я не знаю, возможно ли добавить точки останова.

1 ответ

Решение

Частично можно включить FirebugLite. Смотрите, например, здесь. Одна проблема, которую я обнаружил, заключается в том, что Firebug загружается, но не имеет видимости модели, $root возвращает неопределенное значение. Я попытался обойти эту проблему, создав ресурс Javascript MyResource.js в main/resouces

MyResource = {
    loadFirebug: function(){
      if (!document.getElementById('FirebugLite')){
          E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;
          E = E ? document['createElement' + 'NS'](E, 'script') : document['createElement']('script');
          E['setAttribute']('id', 'FirebugLite');
          E['setAttribute']('src', 'https://getfirebug.com/' + 'firebug-lite.js' + '#startOpened');
          E['setAttribute']('FirebugLite', '4');(document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);
          E = new Image;E['setAttribute']('src', 'https://getfirebug.com/' + '#startOpened');
      }      
    },
    someProperty: "someProperty"
};

Затем мы создаем соответствующий Java-класс для загрузки ресурса.

@JavaScriptResource("MyResource.js")
public class MyResource {

  @net.java.html.js.JavaScriptBody(
      args = {},  body = 
      "MyResource.loadFirebug();"
  )
  public static native void loadFireBug();
} 

Теперь в методе onPageLoad() Java мы можем вызвать метод JavaScript, который загружает FirebugLite.

/**
 * Called when the page is ready.
 */
public static void onPageLoad() throws Exception {
    d = new Data();
    d.setMessage("Hello World from HTML and Java!");
    d.applyBindings();
    MyResource.loadFireBug();
}

Теперь, когда Firebug запускается, у него есть, по крайней мере, объем окружающего его ресурса. Мы все еще не можем добавить точки останова, потому что ресурс не отображается под файлами. Возможно, эксперты DukeScript могут предложить лучший способ справиться с этим.

Примечание 1: вы можете использовать загрузочный Bootstrap, просто включив его в страницу с тегом script. Смотрите здесь

Примечание 2: К сожалению, FireBug Lite, похоже, имеет некоторые проблемы с Bootstrap, помимо версии 1.2. Смотрите здесь

Примечание 3: Вот несколько способов получить доступ к модели DukeScript из контекста javascript.

Другие вопросы по тегам