如何在 iOS webview 的多个页面中注入/评估 JS?

Posted

技术标签:

【中文标题】如何在 iOS webview 的多个页面中注入/评估 JS?【英文标题】:How to inject/evaluate JS in multiple pages of an iOS webview? 【发布时间】:2020-02-07 15:14:13 【问题描述】:

好像android的WebViewClient有这样的方法:onProgressChanged()

ios 的 wkwebview 有什么用吗? (或任何其他 iOS 网络视图)

Webview 的 onNavigationStateChange在这里似乎没有帮助。

想在www.example.comwww.example.com/about 上评估 JS。

【问题讨论】:

【参考方案1】:

onNavigationStateChange 到底是什么意思?这对我来说听起来并不熟悉。

您应该实现 WKNavigationDelegate。 [https://developer.apple.com/documentation/webkit/wknavigationdelegate]。

如果你想在加载一个url后加载JS,你可以实现webView(_, didFinish: WKNavigation)。 WKNavigation 提供 api 来检查请求/url。 要在导航完成之前加载一些 JS,您可以尝试使用 webView(WKWebView, decidePolicyFor: WKNavigationAction) [https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455641-webview] 或webView(WKWebView, decidePolicyFor: WKNavigationResponse) [https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455643-webview]。

【讨论】:

【参考方案2】:

请参阅专门为此目的设计的WKUserScript。在创建 WKWebView 时,会添加一个 WKUserContentController,它可以使用addUserScript 添加脚本。

【讨论】:

我尝试添加多个 userScript 但不起作用,它是替换 userScript,而不是添加更多

以上是关于如何在 iOS webview 的多个页面中注入/评估 JS?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在android上有一个webview,我可以在页面加载之前注入css?

如何在 Android Webview 中加载网页之前注入 javascript?

iOS如何在WebView页面调起微信支付并可以返回App

尝试使用 highcharts 将数据点注入 iOS webView

我可以在WebView中注入什么JavaScript / CSS来仅反转页面背景和白色文本?

iOS webview - 加载多个文件