Webview将不会与JavaScript通信
问题描述:
我正在构建我的第一个iOS混合应用程序,并且无法让JavaScript执行Swift 3函数。我不太清楚如何测试我在做什么,但这是我迄今为止所做的。Webview将不会与JavaScript通信
import UIKit
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView?
let userContentController = WKUserContentController()
override func loadView() {
super.loadView()
let config = WKWebViewConfiguration()
config.userContentController = userContentController
self.webView = WKWebView(frame: self.view.bounds, configuration: config)
userContentController.add(self, name: "iOS")
let url = URL(string:"https://relate.lavishweb.com/account")
let request = URLRequest(url: url!)
_ = webView?.load(request)
self.view = self.webView
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
webView?.evaluateJavaScript("window.settings.test()") { (result, error) in
if error != nil {
print(result!)
} else {
print("dookie")
}
}
print("dookie2")
// this never prints
}
}
的JavaScript:
if(window.webkit){
ev.preventDefault();
webkit.messageHandlers.iOS.getImage();
}
window.settings = {
test(){
$('[required="required"]')[0].placeholder = 'dookie'
},
断点永远不会打,当我使用调试器来测试webView.evaluateJavaScript
功能,以及对应用程序的占位符永远不会改变。任何建议将不胜感激。
答
经过一番修改之后,我发现即使我在服务器上更改它们时,按钮的值并没有改变,所以我意识到Safari会将js文件缓存到浏览器(因为我使用的是虚拟dom的html)。在我从我的模拟器中删除应用程序并重新初始化之后,我能够使所有的工作都能正常工作。
我希望这可以帮助别人!