Могу ли я внедрить / запустить Javascript в фреймах разных доменов в UIWebView? - PullRequest
0 голосов
/ 14 июля 2011

Таким образом, я могу запустить Javascript на странице, которая загружена в UIWebView с помощью -stringByEvaluatingJavaScriptFromString:, но при этом Javascript будет запускаться только в верхнем фрейме в браузере. Я могу перемещаться от верхнего фрейма к другим фреймам того же домена через window.frames, но это не работает для фреймов другого домена. Есть ли способ получить доступ к фреймам разных доменов в UIWebView?

Я пытался проверить, имеет ли параметр для обратного вызова -webViewDidFinishLoad: UIWebViewDelegate другой контекст Javascript, но похоже, что даже когда обратный вызов вызывается для фрейма, завершившего загрузку контекста Javascript, все еще тот же, что и для верхнего фрейма .

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

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Я понимаю, что это было некоторое время назад, но postMessage может делать то, что вам нужно, если вы можете контролировать выполнение JS в дочернем фрейме. Вы можете использовать его для эффективной передачи сообщений вперед и назад, а также потому, что вы можете построить элементарную модель доверия вокруг его использования, что потенциально может даже обеспечить безопасность.

Если вы так и не нашли решения, я бы пересмотрел предложение @ joern!

0 голосов
/ 15 июля 2011

Из соображений безопасности связь между кадрами через javascript ограничена кадрами, которые загружают свое содержимое с одного хоста (с тем же протоколом и портом).

Так что то, что вы пытаетесь сделать, может оказаться невозможным. Однако в HTML5 есть функция под названием postMessage , которая позволяет устанавливать связь между различными хостами. Если у вас есть контроль над содержимым HTML, которое вы загружаете в веб-представление, вы можете проверить это.

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