对于JavaFX';在WebEngine中,如何获得javascript错误通知?
我正在尝试运行一些在JavaFX的WebView中包含Javascript的SVG。我知道我尝试运行的一些脚本有错误,我正在尝试找出如何将它们打印到控制台,以便调试它们。我尝试了以下操作,但从未调用WebErrorEvent:对于JavaFX';在WebEngine中,如何获得javascript错误通知?,javascript,java,svg,javafx,javafx-webengine,Javascript,Java,Svg,Javafx,Javafx Webengine,我正在尝试运行一些在JavaFX的WebView中包含Javascript的SVG。我知道我尝试运行的一些脚本有错误,我正在尝试找出如何将它们打印到控制台,以便调试它们。我尝试了以下操作,但从未调用WebErrorEvent: WebEngine webEngine = browser.getEngine(); webEngine.setOnError(new EventHandler<WebErrorEvent>() { @Override public void
WebEngine webEngine = browser.getEngine();
webEngine.setOnError(new EventHandler<WebErrorEvent>()
{
@Override
public void handle(WebErrorEvent event)
{
System.err.println(event);
}
});
WebEngine-WebEngine=browser.getEngine();
setOneError(新的EventHandler()
{
@凌驾
公共无效句柄(WebErrorEvent事件)
{
系统错误打印项次(事件);
}
});
这是从该控件获取javascript错误反馈的正确方法吗?
setOneError
侦听器仅在加载给定文档时对错误有效
解决这个问题的一种方法是在调用console.log
时调用Java方法。你可以这样做
你的外汇申请
你的html
文本页
日志
Console.log
出口
希望这能有所帮助。console.log()?alert()?这些函数用于打印您自己的消息。它们不会检测到对空对象调用方法的尝试。
WebEngine engine = mainWebView.getEngine();
engine.load("http://whereever.com");
engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
JSObject window = (JSObject) engine.executeScript("window");
window.setMember("java", new Bridge());
engine.executeScript("console.log = function(message) { java.log(message); }"); // Now where ever console.log is called in your html you will get a log in Java console
}
});
public class Bridge {
public void exit() {
Platform.exit();
}
public void log(String text) {
System.out.println(text);
}
}
<h1>Text Page</h1>
<button onclick="java.log('This is log')">Log</button>
<button onclick="console.log('This produces the same result as above')">Console.log</button>
<button onclick="java.exit()">Exit</button>