问题标签 [wknavigationdelegate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
47311 浏览

wkwebview - 获取 WKWebView 的当前完整 URL

有没有办法让WKWebView每个请求都加载完整的 URL?

仅适用于mainFrame导航,不提供 URL 请求参数。

我如何获得完整的 URL,就像在UIWebViewDelegate's

...在任何加载完成后都会调用它,您可以从webView参数中获取完整的请求 URL。

很高兴WKWebView'sURL属性节省了提取 UI 友好的基本 URL 所需的工作,但我们无法获得完整的 URL,这是一个巨大的损失!

我试过使用

...但是与完成页面加载后UIWebView的属性相比,它会为 URL 产生不同的结果。request

0 投票
1 回答
180 浏览

javascript - 从 Swift WKWebView 中的完成处理程序将 html 数据保存在变量中

我正在尝试从网站上抓取数据,而我想要的数据位于 span 标签中。到目前为止,我所做的是:

但是当我这样做时,我会得到零。如果我print(html)代替str = html我得到我想要的输出。

我在这里做错了什么?为什么我不能将该值存储在变量中?

0 投票
1 回答
1950 浏览

ios - WKWebView 没有将内容滚动到映射的 HTML

我正在研究 WKWebView 以在 WKWebView 中呈现 HTML。

这个锚标记会将我的 WKWebView 推送到映射到它的内容。我的完整 HTML 是:

我处理链接按钮的代码如下:

当单击锚标记时,它应该滚动 WKWebview 到在 HTML 中映射到它的内容,这没有发生。

我不知道缺少什么我几乎尝试了所有方法,但它没有滚动到锚标记中的映射数据以查看 HTML,您可以将我的 HTML 粘贴到

请检查并让我知道我错过了什么。

先感谢您。:)

0 投票
1 回答
1036 浏览

swift - 可可斯威夫特:错误评估JavaScript可选(“发生JavaScript异常”)

我正在使用网页加载 WKWebView,并且正在尝试执行 javascrip:

但我收到了这个错误:

为什么我会收到这个错误?,你们中的任何人都知道我做错了什么或解决这个问题的方法吗?

0 投票
2 回答
3019 浏览

ios - 停止导航 WKWebview

这是我的情况:

我在 WKWebView 中有一个视图控制器。此 web 视图以页面“A”开始。在此页面中有一些链接(href),我希望其中一些链接必须在外部浏览器中打开。

出于这个原因,我设置了 WKWebView 委托:

我的问题是,如果我选择外部链接,外部浏览器会打开,但 webview 不会保留在页面 A 上,但它也会加载外部链接,而我希望它保留在页面 A 上。

我不知道为什么

0 投票
1 回答
588 浏览

ios - 如果我实现了decisionPolicyFor navigationAction,WKWebView 为空,如果我删除该函数,则正确加载

这是在 xcode 10.3,swift 5

我正在尝试使用 WKWebView 加载一些 Web 内容。我有一个只是 NSObject 的类,它实现了 WKNavigationDelegate 类。

  • 我创建 Web 视图
  • 设置导航委托
  • 加载网页视图

如果我包含此功能:(允许任何内容)

该页面仅加载一个空的 html 正文,并且没有显示任何内容。此外,该函数似乎从未以这种方式调用。

如果我注释掉该功能,页面将正常加载。

我难住了!

我尝试将包含 webview 的类更改为 UIViewController,然后将其添加到主控制器。这样做,决策处理函数确实被调用,但我的 webview 仍然是空的。(它只要求关于:空白)

这是怎么发生的:我的主视图控制器有一个 NSObject 的实例,它做了以下简化:

0 投票
1 回答
338 浏览

ios - WKWebView 拦截本地文件请求

我的 iOS 11+ 应用程序中有一个 WKWebView,我需要从本地内存中的 HTML 加载自定义 HTML。我可以通过使用webView.loadHTMLStringor来实现这一点webview.load(data),它工作正常。

此 HTML 引用了一些必需的 .js/.css/.png 文件。对于普通的 Web URL 请求,WKWebView 会即时执行此操作,加载丢失的文件。但在这种情况下,我需要拦截这些请求,并提供文件内容,因为其中一些需要动态生成。因此,我需要服务的 .css 文件等实际上并不作为本地文件存在。

我认为这只是实现协议decidePolicyFor方法的问题WKNavigationDelegate,但由于某种原因,本地子请求不会触发它,那么我该如何实现呢?

我还尝试将 HTML 保存为本地临时文件并使用 加载它webView.load(URLRequest),但这也不会触发委托。如果它是一个 Web URL,它会触发正常。

0 投票
1 回答
113 浏览

ios - 无法使用 WKWebView 在 Safari 中打开外部链接

我正在从迁移UIWebViewWKWebView. 需要在WKWebView所有内容中加载 HTML 内容工作正常,但问题是在单击任何链接后无法在外部 safari 浏览器中打开链接WKWebView。我用下面的代码

班级

出口和WKWebView变量

viewDidLoad方法

用于加载 HTML 内容

决定政策

decidePolicyFor方法应该调用但它没有执行我无法找到问题

0 投票
1 回答
329 浏览

ios - 当在 WKWebView 中加载链接时,我如何知道外部应用程序是否会打开?

我有一个 WKWebView,webview 将加载类似https://qr.payme.hsbc.com/2/XXXXYYYZZZ的链接。

加载链接时有两种可能的结果,
案例1是用户安装了Payme应用后会打开一个名为Payme的应用;案例 2 是当用户没有安装 Payme 应用程序时
,webview 将被重定向到静态页面https://payme.hsbc.com/ 。

我的问题是如何知道 Payme 应用程序是否已打开?

0 投票
0 回答
127 浏览

html - WKWebView 的 didFinish 委托方法接收回调的时间过长

我的 UITableViewCell 中有一个 WKWebView。我使用 HTML 字符串配置我的 webview,如下所示:

一旦 webview 完成加载,我希望在以下委托方法中接收回调,以便计算 webview 的内容大小。

在上述委托中接收回调需要很长时间。

请提出一种优化加载时间的方法。