當加載與之前加載的頁面具有相同url的頁面時,JavaFX顯示一些奇怪的行爲。下面的代碼演示了這個問題:WebView無法使用相同的URL重新加載頁面
類initalization加載頁面後,使用自定義樣式類將高亮區應用於任意html元素。此高亮顯示正確。
最後,通過用戶輸入事件,告知WebView加載一個新頁面(使用相同的URI)。不是按原樣顯示頁面,也會顯示高亮顯示。
WebView webView = new WebView();
static String URI = "http://www.example.com";
public void loadPage() {
// Step 1: load page
webView.getEngine().load(URI);
// Step 2: Change style attribute in page
(Element) element = xpath.evaluate("//div[@id='mydiv']", webView.getEngine().getDocument(), XPathConstants.NODE);
element.setAttribute("class", "mystyle");
}
handle() {
// Step 3: load page again
webView.getEngine().load(URI);
}
我已經嘗試迫使頁面WebView.getEngine()重載。重載(),禁用緩存,等待工作人員來完成,等
我目前看到的唯一選擇是創建一個WebView的新實例,但由於這非常重要,所以我更喜歡重用該對象,而不是每次我想恢復到原始頁面時創建新對象。
你是什麼意思「重建整個WebView」?調用'webView.getEngine().load(「你的url」);'再次就夠了。這就像一個網頁的清爽。無需重新創建webview實例。 –
我已經重寫了我的文本,但是是的,因爲它是我唯一的工作解決方案,所以我每次需要重新加載之前與DOM文檔一起玩過的頁面時,都會創建一個webview的新實例。看起來DOM文檔在WebView引擎中被內部緩存。 – Stern