将JavaScript注入UIWebView

时间:2017-01-25 08:03:04

标签: javascript ios iphone uiwebview swift3

我正在尝试将本地JS文件注入UIWebView。我已将其设置为加载网站的桌面版本,但它似乎不起作用。我在Swift 3中找不到任何可以做到这一点并尝试将它拼凑在一起的东西,但似乎我碰到了一堵砖墙。

这是我到目前为止所得到的:

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

@IBOutlet weak var webView: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    UserDefaults.standard.register(defaults: ["UserAgent": "custom value"])

    webView.loadRequest(URLRequest(url: URL(string: "https://www.myfitnesspal.com/account/login")!))

    func webViewDidFinishLoad(webView: UIWebView) {

        let jsPath = Bundle.main.path(forResource: "mfpketo.user", ofType: "js")

        webView.stringByEvaluatingJavaScript(from: jsPath!)

        print("test")
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

1 个答案:

答案 0 :(得分:0)

你差不多了。您跳过重要的一行,从<{p>中的JS加载jspath

webView.stringByEvaluatingJavaScript(from: jsPath!)

你错误地注入js路径而不是js本身。因此,要加载js文件的内容:

var js = try? String(contentsOfFile: jsPath, encoding: String.Encoding.utf8)

然后,像往常一样将js移交给webview。

 webView.stringByEvaluatingJavaScript(from: js!)