WebView检测iframe中的点击事件

6
我有一个WebView,在其中加载了一个加载某些内容的Javascript。该内容是带有iframe的html。
似乎在iframe内的任何点击都不会触发调用 "WebViewClient#shouldOverrideUrlLoading(WebView view, String url);"。WebView已经设置了"WebViewClient"和"WebChromeClient"。
我能想到的一种解决方法是,在WebView上调用"getSettings().setSupportMultipleWindows(true)",然后在"onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg)"中假设该调用是在iframe内进行的,并使用一些插入的javascript获取iframe数据。但我认为这很丑陋。
因此,问题是:如何检测在WebView中加载的iframe内的点击?
谢谢!
1个回答

4
我认为我已经找到了问题所在:我破坏了同源策略。正在进行Web开发的同事指导了我正确的方向。
整个文档(包含iFrame)与包含iFrame的文档具有不同的来源(组合方案,主机名和端口号)。只要这些框架(包含文档和内部iFrame)具有不同的来源,它们就无法通信。这就是为什么我没有收到对shouldOverrideUrlLoading的调用。
编辑:似乎有一种方法可以突破上述安全策略,但这会带来接受的安全风险:在包含iFrame的响应中添加以下标题:“Access-Control-Allow-Origin:*”。

@gunnar现在能播放视频吗?我迫切需要一些答案,我找到了很多但不能适应我的情况。 - Nitin Misra
@NitinMisra:你遇到了什么问题?为什么不在StackOverflow上创建一个新的问题,并发送一个带有其URL的新评论。这样我就可以理解你的问题,而且你也有更大的机会得到其他人的答案。 - gunar
@gunar 在响应设置access-control-allow-origin后,您能否检测到点击事件? - pree

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接