0
我想在頁面上設置一些JavaScript項目,但在頁面上運行javascript後項目正在設置。例如,我創建了一個Console.log()
方法來顯示我的Java控制檯中的東西以進行調試。但是頁面代碼運行後,這些項目會被設置,因此日誌記錄不起作用(請參閱第二部分代碼)。有沒有辦法讓我在頁面上的javascript運行之前啓動代碼?javafx WebView在腳本之前設置()
所以,這裏是我如何啓動該項目在我的Java應用程序:
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>(){
if(newState.equals(Worker.State.SUCCEEDED)){
JSObject win = (JSObject)Browser.webEngine.executeScript("window");
win.setMember("$js", new JavaScriptBinder());
win.setMember("console", new JSConsole());
}
}
這裏是一個JavaScript示例:
<script>
// This line doesn't work:
console.log("Hello");
element.addEventListener("click", function(){
// This line does work:
console.log("Hello from a click");
});
</script>
這個問題與java有關,而不是javascript –
這個答案是正確的。 Ryan,你遇到這個問題是因爲所有的Java代碼都在JavaScript被評估之後執行(這是stateProperty監聽器所保證的)。所以第一個console.log不起作用,因爲它的評估控制檯尚未設置。第二個是可用的,因爲直到發生click事件纔會對它進行評估(這可能在Java代碼執行後很長時間)。 –