因此,我可以使用-stringByEvaluatingJavaScriptFromString:
在UIWebView中加载的页面中运行Javascript,但这只会在浏览器的顶部框架中运行Javascript。我可以通过window.frames
从顶部框架导航到其他同域框架,但这对于不同的域框架不起作用。有没有办法在UIWebView中访问不同的域?
我已经尝试检查UIWebViewDelegate的-webViewDidFinishLoad:
回调的参数是否具有不同的Javascript上下文,但是即使在为已完成加载的帧调用回调时,它看起来仍然是顶部框架。
感谢您的帮助。
答案 0 :(得分:0)
出于安全原因,帧之间的javascript通信仅限于使用相同主机(具有相同协议和端口)加载其内容的帧。
所以你试图做的事情可能是不可能的。但是对于HTML5,有一个名为postMessage的功能允许跨不同主机进行通信。如果您可以控制要加载到Web视图中的HTML内容,则可能需要检查它。
答案 1 :(得分:0)
我意识到这是不久前的事情,但如果你可以控制子框架上JS的执行,postMessage可能会做你想要的事情。您可以使用它来有效地传递消息,并且因为您可以围绕其使用构建基本的信任模型,甚至可以安全地评估事物。
如果你从未找到解决方案,我会重温@ joern的建议!