JavaFX показывает некоторое нечетное поведение при загрузке страницы с идентичным URL-адресом на ранее загруженную страницу. Приведенный ниже код демонстрирует эту проблему:WebView не перезагружает страницу с идентичным URL
После инициализации класса загружается страница, затем выделение выделяется произвольному элементу 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 »);' again должно быть достаточно. Это похоже на обновление веб-страницы. Нет необходимости воссоздавать экземпляр webview. –
Я переработал свой текст, но да, поскольку это единственное рабочее решение, которое я имею, это создать новый экземпляр webview каждый раз, когда я хочу перезагрузить страницу, для которой я играл с DOM Document раньше. Похоже, что DOM Document, получает кэширование внутри механизма WebView. – Stern