2015-01-08 98 views
1

我有一個JavaFXWebView正在更新後臺消息並執行腳本來更新頁面。JavaFX WebView/WebEngine

webEngine.getLoadWorker().stateProperty().addListener(
    new ChangeListener<State>() { 
    public void changed(ObservableValue ov, State oldState, State newState) { 
     if (newState == State.SUCCEEDED) { 
      try { 
       webEngine.executeScript("foo1();"); 
      } catch (Exception e) { 
       // JSException: TypeError: 'undefined' is not a function 
      } 
     } 
    } 
}); 

這通常可以正常運行,但是當我創建第二WebView與它自己的WebEngine和嘗試,並大約在同一時間在第一頁上執行該第二foo2(),在爲執行foo1,我得到這個:

JSException: TypeError: 'undefined' is not a function

我可以有一個同步塊,但似乎因爲webEngines被假設是獨立的,應該是不必要的,有沒有其他soluti項?

+0

你真的應該使用更具描述性的標題 –

回答

1

這是您程序中的會話管理錯誤。

2個WebViews競爭同一個會話,並且...假設你還沒有實現協議和會話處理程序,包括cookie存儲等,第二個無法獲得連接的web引擎將運行腳本關於不存在的東西(就Web引擎而言),因此是一個未定義的對象,因此是錯誤。

我通過HTTPS協議使用這個東西,並且已經體驗過這個。