2017-10-15 67 views
0

我正在构建我的第一个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功能,以及对应用程序的占位符永远不会改变。任何建议将不胜感激。

回答

0

经过一番修改之后,我发现即使我在服务器上更改它们时,按钮的值并没有改变,所以我意识到Safari会将js文件缓存到浏览器(因为我使用的是虚拟dom的html)。在我从我的模拟器中删除应用程序并重新初始化之后,我能够使所有的工作都能正常工作。

我希望这可以帮助别人!