ios - 获取使用 WKWebView 点击的所有项目的 URL

标签 ios swift url wkwebview

我有一个 WKWebView 在 iOS 中加载页面。如果用户导航到 WKWebView 中的另一个页面,我可以获得他们点击的 URL,如下所示:

var clickedUrl = String()

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {

    clickedUrl = webView.URL?.absoluteString as String! // GETS URL OF CURRENT PAGE LOADED
}

如果用户访问 YouTube,clickedUrl = http://www.youtube.com ,这很棒。但是......如果用户然后点击视频 - 没有。和另一个视频 - 什么都没有。我没有得到点击视频的 URL。 Vimeo 和其他各种网站也是如此。

我在这里做了一些研究并找到了其他帖子,这似乎与“WKWebView 不报告在非主框架上加载完成”有关,但没有解释如何获取 URL已加载。我猜这与像 YouTube 这样的网站使用 JavaScript 导航到他们网站上的其他页面并加载它们有关。

我也尝试过 webView(_:decidePolicyForNavigationAction:)。此功能比较冗长,但此功能也不会检测在 YouTube 等网站中单击的链接的 URL。我想要做的是获取用户点击的所有内容的 URL。我猜我需要深入研究 NSURL 或 NSURLRequest 才能得到这个,但我不知道该怎么做。任何帮助将不胜感激。

抱歉...请查看重复/类似问题:Detect when WKWebView has finished loading EVERY time

最佳答案

您需要观察 WKWebViews URL KVO 属性:

swift :

webView.addObserver(self, forKeyPath: "URL", options: .New, context: nil)

objective-C :

[webView addObserver:self forKeyPath:@"URL" options:NSKeyValueObservingOptionNew context:NULL];

然后像往常一样在 observeValueForKeyPath:ofObject:change:context 中访问 WKWebViews URL 属性。

关于ios - 获取使用 WKWebView 点击的所有项目的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29532620/

相关文章:

ios - Xcode "Missing Submodule"警告

swift - 刷新绘图功能而不删除子图层

ios - StackView 内的 ScrollView

ios - Swift 避免网站的 cookies 警告

url - Blob 当前是否有 SAS URL?

ios - 在 Swift 2.0 中,我如何使标题单元格与 tableview 单元格一起移动

ios - 仅写入 Swift SQLite 最后一个值

ios - iOS:自定义对象上的FilterUsingPredicate

swift - 如何解决 Carthage 和 Swift 版本的错误?

facebook - 多个 Facebook Like 按钮同一页面 URL