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

Can I inject / run Javascript in different-domain frames in UIWebView?

本文关键字:框架 UIWebView 运行 Javascript 我可以 注入      更新时间:2023-09-26

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

我试过检查是否参数到UIWebViewDelegate的-webViewDidFinishLoad:回调有一个不同的Javascript上下文,但它看起来像即使当回调被调用的帧已经完成加载Javascript上下文仍然是顶帧。

感谢您的帮助。

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

所以你想做的事情可能是不可能的。然而,HTML5有一个叫做postMessage的特性,它允许跨不同主机进行通信。如果你可以控制加载到网页视图中的HTML内容,你可能需要检查一下

我意识到这是一段时间前,但postMessage可能做什么你之后,如果你可以控制JS的执行子框架。您可以使用它来有效地来回传递消息,并且由于您可以围绕它的使用构建基本的信任模型,因此甚至可以安全地进行eval。

如果你从来没有找到解决这个问题的办法,我会重新考虑@joern的建议!