Webview无法与JavaScript

时间:2017-10-15 07:11:43

标签: javascript ios swift3

我正在构建我的第一个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函数时,断点永远不会被触发,并且应用程序上的占位符永远不会改变。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

经过一些修补后,我发现即使我在服务器html markup上更改它们,按钮的值也没有改变,所以我意识到Safari正在将js文件缓存到浏览器中(因为我' m使用虚拟dom而不是html)。我从我的模拟器中删除了应用程序,然后重新初始化它后,我就能使一切正常运行。

我希望这有助于某人!