ios - WKWebView 将查询参数添加到点击的链接
问题描述
我的应用程序中有一个WKWebView
可以打开一些网页。这些网页中有链接。如果用户点击任何链接,我需要向 url 添加一个参数,例如,如果点击的 url 是https://google.com,则应将其修改为https://google.com?query=xyz和导航应该继续。
我看了看WKNavigationDelegate
,有一种方法
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler API_AVAILABLE(macos(10.15), ios(13.0));
此方法返回包含点击链接 url 的导航操作,URLRequest
但这不是可变的。
任何帮助,将不胜感激。
解决方案
您可以在其中decidePolicyForNavigationAction
检查 Web 视图尝试加载的 URL。如果 URL 不包含您想要的查询,您可以通过调用 取消导航decisionHandler(.cancel)
,创建一个新 URL 附加您需要的查询,并使用您的查询加载新 URL。
这将再次启动导航,但现在当您检测到 URL 包含您的查询时,您不会取消导航。
推荐阅读
- c# - 在 Entity Framework Core 中禁用延迟加载
- mongodb - 如何在 Mongodb 中拉出嵌套对象?
- c# - Linq:如何从数组中分配 linq 中的局部变量
- vuejs2 - VueJS:如何让第一个表单选择输入确定在第二个选择输入中显示什么?
- anaconda - 为什么我的 anaconda 频道没有我想要的包
- r - rstanarm:可视化/提取证据积累的数据(从先验到后验)
- java - 如何编写java web服务从android上传图像并在android中使用
- node.js - 如何在 GET 请求的 EJS 文件中包含 JS 变量?
- android - 即使 FirebaseUser 不为空,FirebaseUser 也会返回空电子邮件
- angular - 如何在Angular中将字符串转换为数字