gpt4 book ai didi

javascript - 带有 javascript 的 Swift WKWebView 界面未运行

转载 作者:行者123 更新时间:2023-11-28 07:28:44 26 4
gpt4 key购买 nike

我只是用 WKWebView 和 swift 4.0 (iOS 12.1) 构建我的应用

我需要从在线 html 运行我的 javascript,但是,如果我将 url 从索引移动到另一个页面,我的打印消息根本不起作用。

    let contentController = WKUserContentController()
contentController.add(self, name: "myHandler")

let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController

webview = WKWebView(frame: self.view.frame, configuration: configuration)
webview.uiDelegate = self
webview.navigationDelegate = self
self.view = self.webview


override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "example.com/index") // of course https://
let request = URLRequest(url: url!)
webview.load(request)

当我移动到 webView 中的另一个 html 页面时,我错过了 userContentController。索引页面可以调用这个,但另一个页面不调用任何函数。

index.html(ok) -> 链接到 a.html -> a.html(不行)-> 链接到 index.html -> index.html(ok)

不要调用这个:

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("call print out")
if message.name == "myHandler" {
print("JS -> Native Call \(message.body)")
abc()
} else {
print("JS -> Native N/A")
}
}

我什至根本无法收到任何消息,即使是“调用打印输出”。如何在我的代码中激活 userContentController?

最佳答案

必须通过 WKPreferences 启用 Javascript .您可以在 preferences 中指定这些你的 WKWebViewConfiguration 字段。 默认禁用 Javascript。

您只需设置 javaScriptEnabled首选项对象的字段为 true。首选项对象可以更改几个有用的设置。我建议您查看文档。

具体来说,您初始化 WKWebView 的代码应该如下所示。

let contentController = WKUserContentController()
contentController.add(self, name: "myHandler")

let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController
configuration.preferences = WKPreferences()
configuration.preferences.javaScriptEnabled = true

webview = WKWebView(frame: self.view.frame, configuration: configuration)
webview.uiDelegate = self
webview.navigationDelegate = self
self.view = self.webview

PS 您可能还想看看 this question .我不会将您的标记为重复项,因为您的问题是问为什么 javascript 不工作,而不是如何启用它。

编辑:JavaScript 现在默认启用。这个答案不再准确。

关于javascript - 带有 javascript 的 Swift WKWebView 界面未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55654442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com