JavaFX, веб-движок, веб-просмотр. Изменение src тега ‹img› (внутри только что загруженного документа) на лету

Во-первых, что касается настольного (не Android) приложения.

Я хочу заменить источник изображения, который находится внутри загруженного HTML-документа, на локальный (с моего жесткого диска). Я показываю загруженную страницу с помощью компонентов JavaFX: webEngine->webView->Scene->Stage. Что я сделал?

Я загрузил страницу с помощью webEngine.load("http://any_page"). После этого я получил объект изображения (на стороне Java) и передал его в HTMLImageElementImpl. Это представление объекта, который существует на загруженной странице. Я установил атрибут src, как показано ниже:

htmlImageElementImpl.setSrc("file:/local_path_to_my_image");

... и ожидается, что новое изображение появится на загруженной странице. К сожалению, это не работает. Предыдущее изображение (которое изначально было на загруженной странице) исчезло, а новое не появилось (есть белая область). Я определил, что это изображение есть (когда я нажимаю на него правой кнопкой, можно выбрать опцию «открыть изображение в новом окне» и увидеть его). Кажется. Я думаю, что нужно обновить компонент, чтобы показать его.

Что интересно, когда я заменяю src этого тега на изображение, существующее в Интернете, как показано ниже:

htmlImageElementImpl.setSrc("http://_file_existing_in_the_internet//image.jpg");

... все работает нормально, и замененное изображение появляется на лету.

Я провел два дня, и я не справился с этой проблемой. Поэтому я решил спросить вас.

С наилучшими пожеланиями

Кесс


person Kessler    schedule 14.07.2016    source источник
comment
Я забыл добавить одну важную информацию. Когда я загружаю страницу из статического html (webEngine.loadContent()), все работает нормально. Только при загрузке с удаленного сервера возникает проблема с заменой изображения на файл с локального компьютера. Вероятно, загружаемый контент ориентирован на ресурсы, поступающие с сервера, а не на локальный. Есть идеи?   -  person Kessler    schedule 14.07.2016
comment
Эй, вы пытались использовать преобразование URI? stackoverflow.com/questions/26447451/   -  person gumuruh    schedule 19.02.2017


Ответы (1)


Я забыл ответить. Проблема была связана с вопросами безопасности. Возможность доступа к файловой системе (с уровня java-скриптов) ограничена по вышеупомянутой причине.

Решение: я установил встроенный в Java локальный HTTP-сервер и поделился там этими изображениями. Мы должны принять тот факт, что указанный порт на локальной машине должен быть открыт, но это приемлемое решение.

person Kessler    schedule 28.07.2016