我正在构建我的第一个iOS混合应用程序,但我无法使用JavaScript来执行Swift 3功能。我不太确定如何测试我正在做的事情,但到目前为止我已经做了。
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
函数时,断点永远不会被触发,并且应用程序上的占位符永远不会改变。任何建议都将不胜感激。
答案 0 :(得分:0)
经过一些修补后,我发现即使我在服务器html markup
上更改它们,按钮的值也没有改变,所以我意识到Safari正在将js文件缓存到浏览器中(因为我' m使用虚拟dom而不是html)。我从我的模拟器中删除了应用程序,然后重新初始化它后,我就能使一切正常运行。
我希望这有助于某人!