加载 JavaScript

我们可以使用方法 stringByEvaluatingJavaScriptFromString()UIWebView 上运行自定义 JavaScript。此方法返回运行脚本参数中传递的 JavaScript 脚本的结果,如果脚本失败则返回 nil。

迅速

从 String 加载脚本

webview.stringByEvaluatingJavaScriptFromString("alert('This is JavaScript!');")

从本地文件加载脚本

//Suppose you have javascript file named "JavaScript.js" in project.
let filePath = NSBundle.mainBundle().pathForResource("JavaScript", ofType: "js")
        do {
            let jsContent = try String.init(contentsOfFile: filePath!, encoding: NSUTF8StringEncoding)
            webview.stringByEvaluatingJavaScriptFromString(jsContent)
        }
        catch let error as NSError{
            print(error.debugDescription)
        }

Objective-C

从 String 加载脚本

[webview stringByEvaluatingJavaScriptFromString:@"alert('This is JavaScript!');"];

从本地文件加载脚本

//Suppose you have javascript file named "JavaScript.js" in project.
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"JavaScript" ofType:@"js"];
NSString *jsContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[webview stringByEvaluatingJavaScriptFromString:jsContent];

注意 stringByEvaluatingJavaScriptFromString:方法同步等待 JavaScript 评估完成。如果你加载了尚未经过审核的 JavaScript 代码的 Web 内容,则调用此方法可能会导致你的应用挂起。最佳实践是采用 WKWebView 类并使用其 evaluateJavaScript:completionHandler:方法代替。但是 WKWebView 可以从 iOS 8.0 及更高版本获得。