问题:h5页面title动态修改,而IOS webview中网页标题只加载一次,动态改变是无效的。
场景:vue-electron在加载过程中遇到
We’re sorry but magic-square-eye-c-end-h5 doesn’t work properly without JavaScript enabled. Please enable it to continue.
页面中title会被替换成magic-square-eye-c-end-h5。iOS在webView(_: didFinish:)中修改navigationItem.title只会赋值一次。
解决方案:
override func viewDidLoad() {
super.viewDidLoad()
// 监听WKWebView的title属性变化
webView.addObserver(self, forKeyPath: "title", options: .new, context: nil)
}
// 监听标题变化的观察方法
override func observeValue(forKeyPath keyPath: String?,
of object: Any?,
change: [NSKeyValueChangeKey : Any]?,
context: UnsafeMutableRawPointer?) {
if keyPath == "title",
let newTitle = change?[.newKey] as? String {
// 更新iOS应用程序中的标题
self.navigationItem.title = newTitle
// print("title 改变了",newTitle)
}
}
deinit {
webView.removeObserver(self, forKeyPath: "title")
}