0

使用 DukeScript 时是否可以调试 JavaScript?我试过添加 FirebugLite

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

它加载了,这很棒,但它没有 $root 模型的可见性。另外我不知道是否可以添加断点。

4

1 回答 1

0

部分可以包括 FirebugLite。例如,请参见此处。我发现的一个问题是 Firebug 加载但模型不可见,$root 返回未定义。我试图通过在 main/resouces 下创建一个 Javascript 资源 MyResource.js 来解决这个问题

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 方法中,我们可以调用加载 FirebugLite 的 JavaScript 方法

/**
 * 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:这里有几种方法可以从 javascript 上下文中访问 DukeScript 模型

于 2015-06-02T23:57:59.020 回答