Как javascript в WebView / UIWebView и объектный объект c общаются друг с другом? - PullRequest
0 голосов
/ 23 марта 2011

Я обнаружил, что WebView / UIWebView в OSX / iOS дают нам прекрасную возможность создавать необычные макеты пользовательского интерфейса с помощью html / css / javascript. Я хотел бы знать, как javascript в UIWebView может вызывать объект object-c за пределами UIWebView?

Я искал на форуме и нашел эту тему: Javascript в обратном вызове UIWebView для C / Objective-C и документ здесь .

Но, похоже, делегат веб-представления будет вызываться только тогда, когда закончится загрузка / загрузка представления или что-то в этом роде. Есть ли способ, которым javascript может вызвать объект вне представления в любое время?

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Я обнаружил, что настройка window.location внутри UIWebView, похоже, имеет побочные эффекты.В частности, он предотвращает любые дальнейшие манипуляции JS с DOM, даже если ваш shouldStartLoadWithRequest: возвращает YES.

Существует решение для ведения журнала консоли, включающее механизм опроса, описанный здесь , , который может бытьрасширен, чтобы разрешить вызов любого произвольного метода target-c, но, вероятно, это повлияет на производительность.

Другое решение, если вы хотите обойтись без функции javascript alert(), - переопределить runJavaScriptAlertPanelWithMessage: UIWebView.метод в категории.Это используется здесь , чтобы изменить внешний вид диалогового окна предупреждения, но также может быть использовано для вызова любого произвольного метода target-c, основанного на содержимом сообщения.Тем не менее, имейте в виду, что это недокументированный API-интерфейс, и поэтому его не следует использовать в производстве (это может привести к отклонению вашего приложения).

1 голос
/ 23 марта 2011

Смотрите мой ответ здесь: NSString в UIWebview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...