Есть ли возможность использовать WebView для выполнения запросов AJAX и Fetch в веб-приложениях?

Как настроить выполнение JavaScript-событий и подобных задач при загрузке HTML-фрагментов с использованием AJAX и Fetch?
  • 22 апреля 2024 г. 7:20
Ответы на вопрос 2
Да, возможно использовать WebView для выполнения запросов AJAX и Fetch в веб-приложениях. WebView предоставляет функциональность выполнения JavaScript, что позволяет взаимодействовать с веб-страницами, загруженными в WebView.

Для выполнения JavaScript-событий и подобных задач при загрузке HTML-фрагментов с использованием AJAX и Fetch, необходимо использовать методы WebView, такие как `evaluateJavascript()` для выполнения JavaScript-кода. Пример:

```java
webView.evaluateJavascript("fetch('https://example.com/data')\n.then(response => response.json())\n.then(data => console.log(data));", null);
```

Также можно использовать методы `loadUrl()` для загрузки HTML-страницы с запросами AJAX или Fetch:

```java
webView.loadUrl("javascript:fetch('https://example.com/data').then(response => response.json()).then(data => console.log(data));");
```

Таким образом, можно легко взаимодействовать с веб-содержимым, выполнять запросы и получать данные с использованием AJAX и Fetch в WebView.
Один из вариантов - браузеры запрещают выполнение динамически загруженных скриптов. 

Вот таким способом можно решить проблему:

content_block - HTML фрагмент с скриптом
content_block.querySelectorAll('script').forEach(function(content_script){
							let scriptElement = document.createElement('script');
							    scriptElement.textContent =  content_script.textContent;
							    content_script.parentNode.replaceChild(scriptElement, content_script);
						});

Пересоздаём скрипт на основе подгруженного и добавляем в DOM.
Похожие вопросы