加载 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 及更高版本获得。