Закрытие модального из приложения iOS - PullRequest
0 голосов
/ 03 июля 2018

Я создаю приложение, которое оценивает JavaScript внутри WKWebWiew. Моя проблема в том, что внутри моего webView отображается модал, который имеет только свою id = модальную форму. Как мне закрыть его с помощью JS?

Например, я попробовал что-то вроде: webView.evaluateJavaScript("document.getElementById('modal-form').setAttribute(\"style\", \"display:none\");"), но он не работает должным образом.

Без кода Swift это выглядит так: document.getElementById('modal-form').setAttribute("style", "display:none");

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 03 июля 2018

getElementByClass - это не метод, который существует во время выполнения JavaScript (или, по крайней мере, он не "нативный"). Это должно быть getElementsByClassName, которое возвращает массив, а затем вы извлекаете все из этого массива.

Если ваш модальный элемент - единственный элемент этого класса, он должен быть скрыт, как и ожидалось, используя:

var elements = document.getElementsByClassName('modal-form');
elements.forEach(function(element) {
    element.setAttribute('style', 'display: none');
});

или короче:

document.getElementsByClassName('modal-form').forEach(function(e) { e.setAttribute('style', 'display: none') });

Наконец, для вашего WKWebView это должно работать:

webView.evaluateJavaScript("document.getElementsByClassName('modal-form').forEach(function(e) { e.setAttribute('style', 'display: none') });")

Было бы намного лучше, если бы этот конкретный модал имел уникальный id и ссылаться на него, используя document.getElementById(). id уникальны для HTML.

...