載入 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 及更高版本獲得。