iOS SDK. Как внедрить JavaScript-функцию в UIWebView

Задача добавления JavaScript «на лету» к уже загруженной в UIWebView HTML-странице появилась в свете несколько другой проблемы: необходимо было скрыть нужный нам элемент в UIWebView. Причем скрыть именно в программно заданный момент (по нажатию на кнопку, если быть более конкретным). В реализации задуманного нам помог пост, вольный перевод выжимки из которого представлен ниже.

———————————————————————————————————————————————

UIWebView имеет не так много методов экземпляра класса. Одним из них является stringByEvaluatingJavaScriptFromString — очень мощный и, к сожалению, плохо документированый.

Давайте рассмотрим этот загадочный метод в нескольких примерах.

Тривиальный пример того, как использовать stringByEvaluatingJavaScriptFromString, чтобы получить название HTML-документа:

NSString *title = [WebView stringByEvaluatingJavaScriptFromString: @ "document.title"];

Как правило, эту строчку имеет смысл вставлять в метод webViewDidFinishLoad.

Эта методика не ограничивается одной-вкладыши, или доступ простыми свойствами. Вот пример двух строк кода JavaScript в определенном порядке, как и следовало ожидать:

[WebView stringByEvaluatingJavaScriptFromString: @ "уаг field = document.getElementById('field_2');"
"field.value='Multiple statements - OK';"];

Также таким образом можно вызывать JavaScript-функции. Если же нужно вызвать функцию JavaScript, которая еще не существует на веб-странице, то её можно добавить к ней самим следующим образом:

[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function myFunction() { "
"var field = document.getElementById('field_3');"
"field.value='Calling function - OK';"
"}\";"
"document.getElementsByTagName('head')[0].appendChild(script);"];

[webView stringByEvaluatingJavaScriptFromString:@"myFunction();"];

Пояснения:

Строка 1: Сначала мы создаем script элемент, используя JavaScript.
Строка 2: Устанавливаем тип элемента script на text/JavaScript.
Строка 3-6: Устанавливаем собственно содержание JavaScript-функции, которую мы хотим внедрить, в script-элемент
Строка 7: Добавляем новый элемент script как дочерний в head-элемент HTML DOM.
Строка 9: Вызов новой функции JavaScript.

Совет: Вы можете разбить NSString-константу на несколько строк в Xcode для повышения удобства чтения. Просто в конце строки и в начале следующей поставьте символ двойной кавычки. Во время компиляции эти линии будут объединены в одну строку.

Вы можете использовать этот общий метод, чтобы добавить JavaScript на любую веб-страницу, которую вы скачиваете для отображения в UIWebView.

Полезная статья? Их будет больше, если вы поддержите меня!

https://money.yandex.ru/embed/small.xml?account=410011399843532&quickpay=small&yamoney-payment-type=on&button-text=06&button-size=l&button-color=orange&targets=%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D1%8E+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82+lexpenz.com&default-sum=50&successURL=