В моем приложении есть WebView, который был загружен строкой HTML. Пользователь вносит изменение, которое означает, что часть HTML теперь нуждается в обновлении. Вместо того, чтобы перезагрузить всю страницу, я хочу обновить только ее часть. Поэтому я делаю что-то вроде:
- Создать новый HTML для части страницы
- Создать
DOMDocumentFragment
из этого HTML
- Заменить существующий
DOMElement
новым фрагментом
Это прекрасно работает, но не в том случае, если новый HTML содержит тег <SCRIPT>
. Сценарий будет вставлен в DOM, но WebKit не запустит его, оставив страницу в другом состоянии, если бы я ее перезагрузил.
Насколько я понимаю, WebKit не запускает вставленные сценарии, потому что это может привести к возникновению проблемы безопасности, если веб-страница может создавать собственные сценарии и вставлять их. Но это мое собственное приложение, управляющее страницей, а не ненадежный веб-сайт.
Так что мне бы хотелось, чтобы какой-то способ запуска WebKit запускал скрипт после вставки. Кто-нибудь знает, как это можно сделать?
(В настоящее время я имитирую это, загружая HTML-код в веб-просмотр вне экрана, позволяя ему запустить сценарий, а затем копируя его в реальное веб-представление. Прекрасно работает для простых сценариев, но не работает на многих более сложных, таких как регистрация обработчика события.)