5

我有一个 WebView,我正在加载一个加载一些内容的 javascript。该内容是带有 iframe 的 html。

似乎 iframe 中的任何点击都不会触发对WebViewClient#shouldOverrideUrlLoading(WebView view, String url);Webview 的调用,并同时设置了WebViewClientWebChromeClient

我可以看到的一种解决方法是调用getSettings().setSupportMultipleWindows(true)WebView,然后onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg)假设调用是在 iframe 中进行的,并使用一些插入的 javascript 来获取 iframe 数据。但这对我来说似乎很丑陋。

所以,问题是:你如何检测在 webview 中加载的 iframe 内的点击?

谢谢!

4

1 回答 1

4

我想我发现了问题所在:我违反了Same Origin Policy。一位从事 Web 开发的同事为我指明了正确的方向。

整个文档(包含 iFrame)与包含 iframe 的来源(方案、主机名和端口号的组合)不同。只要这些框架(包含文档和内部 iframe)具有不同的来源,它们就无法通信。这就是为什么我没有接到电话shouldOverrideUrlLoading

编辑:似乎有一种方法可以超越上述安全策略,但这会带来可接受的安全风险:在包含 iframe 的响应中添加以下标头:“ Access-Control-Allow-Origin:*

于 2013-05-24T06:38:05.233 回答