gpt4 book ai didi

macos - Cocoa WebView中如何识别用户发起的请求?

转载 作者:行者123 更新时间:2023-12-03 17:24:58 25 4
gpt4 key购买 nike

我有一个基于 WebKit 的应用程序。当用户启动打开新页面的操作(例如单击链接)时,我想拦截该 URL 并选择在我的应用程序中打开它,或者将其踢出到 Safari。

理想情况下,我想识别加载序列中的第一个请求,或者直接由用户操作产生的请求。或者,如果我能够识别框架中顶级 URL 的更改就足够了,但需要注意的是,如果我决定将请求退回到 Safari,则需要能够取消该请求。

我已经实现了 webView:decidePolicyForNavigationAction:request:frame:decisionListener,并且我可以看到页面加载期间发出的所有请求。由用户触发的请求,以及由 Javascript、REST 调用等启动的请求。

对于简单的链接,我可以从操作信息中获取WebActionNavigationType。但是,如果用户使用 Javascript onclick() 处理程序单击某个元素,该元素又导航到不同的页面,则导航类型将为“其他”,并且与所有其他 Javascript 请求(即由原始请求产生的辅助 REST 调用)无法区分。请求)。

还有人解决这个问题吗?有什么指点吗?谢谢!

最佳答案

我发现了一些似乎对我有用的东西。在decidePolicyForNavigationAction中,此测试将确定它是否是用户启动的操作:

BOOL isUserAction = (
[frame isEqual:[sender mainFrame]] &&
[[request URL] isEqualTo:[actionInformation objectForKey:WebActionOriginalURLKey]]
);

关于macos - Cocoa WebView中如何识别用户发起的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9201786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com