当前位置: 首页 > 面试题库 >

WKWebView函数,用于检测URL是否已更改

弘思聪
2023-03-14
问题内容

WKWebView类是否具有一个函数,可让您检测该WebView的URL是否已更改?

使用WebView中的某些元素时,didCommitand didStartProvisionalNavigation函数似乎并不总是会触发。

编辑: 尝试添加一个通知观察器。到目前为止,这是我所拥有的:

extension Notification.Name {
    static let checkURL = Notification.Name("checkURL")
}

NotificationCenter.default.post(name: .checkURL, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(getter: webView.url), name: .checkURL, object: webView.url)

问题答案:

您是什么意思,他们似乎并不总是会开除?什么样的元素?他们必须为了WkWebView起作用。

该URL试图更改的第一个迹象是在:DecisionPolicyForNavigationAction

- (void) webView: (WKWebView *) webView decidePolicyForNavigationAction: (WKNavigationAction *) navigationAction decisionHandler: (void (^)(WKNavigationActionPolicy)) decisionHandler {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    decisionHandler(WKNavigationActionPolicyAllow); //Always allow
    NSURL *u1 = webView.URL;
    NSURL *u2 = navigationAction.request.URL; //If changing URLs this one will be different
}

在您到达时:didStartProvisionalNavigation它已更改。

- (void) webView: (WKWebView *) webView didStartProvisionalNavigation: (WKNavigation *) navigation {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    NSURL *u1 = webView.URL;  //By this time it's changed
}

您要做的就是实现这些委托方法(在Swift中),并在看到更改时做您想要的事情。



 类似资料:
  • 问题内容: 我正在使用WKWebview开发简单的Web浏览器。我可以检测到SPA时url是否更改,例如trello带有自定义Javascript。 这种方式在放大器页面不起作用。(Google的“加速移动网页”)我尝试使用所有功能,但无法检测到的变化。 但是具有amp页面网址,我想将amp页面网址保存到本地存储。 问题答案: 同样的问题。不幸的是,WKWebView仅在整个页面加载发生时才触发其

  • 问题内容: 如何检查JavaScript中的URL是否已更改?例如,使用AJAX的GitHub之类的网站将在#符号后附加页面信息以创建唯一URL,而无需重新加载页面。检测此URL是否更改的最佳方法是什么? 是否再次调用该事件? URL是否有事件处理程序? 还是必须每秒检查一次URL以检测更改? 问题答案: 在现代浏览器(IE8 +,FF3.6 +,Chrome)中,您只能在上收听事件。 在某些旧的

  • 本文向大家介绍如何检测MySQL数据库结构是否已更改(不是内容)?,包括了如何检测MySQL数据库结构是否已更改(不是内容)?的使用技巧和注意事项,需要的朋友参考一下 我们首先来看一个示例并创建一个表- 以下是查询以了解数据库结构- 这将产生以下输出- 现在,让我们更改数据库结构- 现在,我们将再次检查数据库结构- 这将产生以下输出。我们现在可以匹配结构中的更改-

  • 问题内容: 我有一个基于远程数据更改(通过HTML刮板)进行更新的数据库模型。 我想维护一个称为-的时间戳,该时间戳指示模型值的上次更改时间与以前的更改时间(请注意,这与每次调用模型方法时这些字段都会更新)不同。 这是我的问题: 在模型的方法中,是否存在一种直接的方法来检测模型实例的当前值是否与数据库中的值不同?或者,是否有其他方法可以轻松维护时间戳? 问题答案: http://code.acti

  • 我有一个小的应用程序,用户可以拖放一个HTML表中的任务。 当用户删除任务时,我调用一个名为的javascript函数: 在task_update.php中,我得到我的值;、&并执行PDO更新查询来更新我的数据库。如果查询正确执行,则I 对我来说,最好的做法是什么?

  • 问题内容: 我正在用Python编程,我想知道是否可以测试代码中是否已调用函数 我该怎么做? 问题答案: 如果该函数知道其自己的名称是可以的,则可以使用function属性: 您还可以使用装饰器设置属性: