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