【发布时间】:2012-02-08 21:33:00
【问题描述】:
我有一个基于 WebKit 的应用程序。当用户启动打开新页面的操作(例如单击链接)时,我想拦截该 URL 并选择在我的应用程序中打开它,或者将其踢出到 Safari。
理想情况下,我想识别加载序列中的第一个请求,或者直接由用户操作产生的请求。或者,如果我可以识别框架中顶级 URL 的更改可能就足够了,但需要注意的是,如果我决定将请求退回到 Safari,我需要能够取消请求。
我已经实现了 webView:decidePolicyForNavigationAction:request:frame:decisionListener,并且我可以看到在页面加载期间发出的所有请求。由用户触发的请求,以及由 Javascript、REST 调用等启动的请求。
对于简单的链接,我可以从动作信息中获取 WebActionNavigationType。但是,如果用户单击带有 Javascript onclick() 处理程序的元素,该处理程序又会导航到不同的页面,则导航类型将是“其他”,并且与所有其他 Javascript 请求无法区分(即从原始请求产生的辅助 REST 调用)请求)。
其他人解决了这个问题吗?任何指针?谢谢!
【问题讨论】: