我可以在UIWebView中的不同域框架中注入/运行Javascript吗?

时间:2011-07-14 16:26:37

标签: javascript ios uiwebview

因此,我可以使用-stringByEvaluatingJavaScriptFromString:在UIWebView中加载的页面中运行Javascript,但这只会在浏览器的顶部框架中运行Javascript。我可以通过window.frames从顶部框架导航到其他同域框架,但这对于不同的域框架不起作用。有没有办法在UIWebView中访问不同的域?

我已经尝试检查UIWebViewDelegate的-webViewDidFinishLoad:回调的参数是否具有不同的Javascript上下文,但是即使在为已完成加载的帧调用回调时,它看起来仍然是顶部框架。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

出于安全原因,帧之间的javascript通信仅限于使用相同主机(具有相同协议和端口)加载其内容的帧。

所以你试图做的事情可能是不可能的。但是对于HTML5,有一个名为postMessage的功能允许跨不同主机进行通信。如果您可以控制要加载到Web视图中的HTML内容,则可能需要检查它。

答案 1 :(得分:0)

我意识到这是不久前的事情,但如果你可以控制子框架上JS的执行,postMessage可能会做你想要的事情。您可以使用它来有效地传递消息,并且因为您可以围绕其使用构建基本的信任模型,甚至可以安全地评估事物。

如果你从未找到解决方案,我会重温@ joern的建议!