【发布时间】:2019-09-03 09:14:22
【问题描述】:
我只是使用带有 swift 4.0 (iOS 12.1) 的 WKWebView 构建我的应用程序
我需要从在线 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 (not ok) -> 链接到 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?
【问题讨论】:
-
您是否在您的
info.plist文件中添加了App Transport Security Settings?你可以看看这个问题:stackoverflow.com/questions/32456848/… -
当然,我所有的 url 都使用 https 协议。
-
@axel 最后我发现这是由 Xcode 10.2 错误引起的。Xcode 10.1 没有报告任何问题... :( 感谢您的协助 axel :)
-
很高兴你知道了@Richard
-
@Richard 你还记得问题到底是什么或者你是怎么发现的吗?我遇到了同样的问题,javascript 代码适用于 iOS 12 和 12.2,但不适用于 12.1。有什么提示吗?
标签: javascript swift webview call wkwebview