JAVAFX / WebView / WebEngine FireBugLite还是其他一些调试器?

我正在开发一个应用程序,需要在应用程序的WebView / WebEngine部分运行调试器,以便我可以更好地调试我的应用程序。 但我在互联网上发现注入Firebug Lite的代码由于某种原因无法正常工作。

如果我在Firefox控制台上运行Javascript代码本身可以正常工作,但是当通过JavaFX webview / webengine执行相同的代码时,Javascript代码本身工作正常。 netbeans控制台不会抛出其他错误…所以我不确定为什么FirebugLite UI没有渲染/加载。

什么可能导致这种,任何其他选择?

我正在使用JavaFX 2.2

//不起作用….

webView.getEngine().executeScript("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');}"); 

我能够解决问题。 看起来FirebugLite的当前稳定版本适用于传统浏览器,但有些不同使得它对于JAVAFX WebView查看的应用程序而言失败。

我可以使用未压缩版本的FirebugLite将Firebug添加到我的应用程序中

  

解决方案来自: 使用Firebug Lite测试IE6

您在问题中提供的命令适合我(主要是)。

在尝试触发Firebug之前,您可能不会等到WebView加载文档。

例如,以下代码将为我启动Firebug Lite(JavaFX 8b103,OS X 10.8)。

 import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.Scene; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import javafx.stage.Stage; import org.w3c.dom.Document; public class WebViewWithDebugger extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { final WebView webView = new WebView(); final WebEngine engine = webView.getEngine(); engine.load("http://docs.oracle.com/javafx/2/get_started/animation.htm"); engine.documentProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue prop, Document oldDoc, Document newDoc) { enableFirebug(engine); } }); primaryStage.setScene(new Scene(webView)); primaryStage.show(); } /** * Enables Firebug Lite for debugging a webEngine. * @param engine the webEngine for which debugging is to be enabled. */ private static void enableFirebug(final WebEngine engine) { engine.executeScript("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');}"); } } 

调试

Firebug Lite本身在调试网页方面似乎并不是特别出色(至少在WebView下)。 控制台,html,css和dom面板似乎都很好,以及检查选项。 那里有一些有用的信息。 脚本部分显示了脚本,但我没有看到在脚本中设置断点,监视等。

我在JavaFX Webview中发现快速调试javascript的最佳方法是执行以下操作:

 webView.getEngine().setOnAlert(new EventHandler>() { @Override public void handle(WebEvent event) { System.out.println(event.getData()); } }); 

管道通过你所有的alert("whatever"); 代码段,以便您可以看到正在发生的事情。

Interesting Posts