JAVAFX / WebView / WebEngine FireBugLite или какой-нибудь другой отладчик?
Я разрабатываю приложение и должен запускать отладчик в части приложения WebView / WebEngine, чтобы лучше отлаживать приложение. Но код, который я нашел через Интернет, чтобы ввести Firebug Lite, по какой-то причине не работает.
Сам код Javascript отлично работает, если я запускаю его на консоли Firefox, но не тогда, когда один и тот же код выполняется через веб-просмотр JavaFX / веб-сайт. Консоль netbeans не выдает никаких ошибок другим … поэтому я не уверен, почему интерфейс FirebugLite не является рендерингом / загрузкой.
Что может быть причиной этого, любые другие альтернативы?
- Android WebView onReceivedError ()
- Android WebView не загружает URL-адрес HTTPS
- Экран мигает при использовании веб-просмотра со вспышкой
- WebView загружает веб-сайт в Интернете, загружает локальный файл в автономном режиме
- Как остановить воспроизведение видео на YouTube в Android-браузере?
Я использую 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');}");
- Поддержка других протоколов в веб-браузере Android
- Android WebView - перехватывает клики
- Play Youtube HTML5 встроенное видео в Android WebView
- Разработка Android: использование образа из активов в HTML-формате WebView
- Android: как выбрать текст из webview
- Приложение Android Webview не позволит проигрывателю проигрывать весь экран
- Загрузка HTML-файла в WebView
- android - получить текст из webview
Я смог решить проблему. Похоже, что текущая стабильная версия FirebugLite хорошо работает для традиционных браузеров, но что-то другое, что приводит к сбою приложения, просматриваемого JAVAFX WebView.
Я смог добавить Firebug в свое приложение, используя несжатую версию FirebugLite
Решение взято из: Тестирование IE6 с Firebug Lite
Команда, которую вы предоставили в своем вопросе, работает для меня (в основном).
Возможно, вы не дожидаетесь, пока WebView загрузит документ, прежде чем пытаться запустить Firebug.
Например, следующий код запустит 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");
fragmentы кода, чтобы вы могли видеть, что происходит.