#UIWebViewでのJavaScriptの実行
UIWebViewのViewに対してstringByEvaluatingJavaScriptという関数を実行する事で、引数に設定されているJavaScriptの関数が実行されます。
//Swift
uiWebView.stringByEvaluatingJavaScript(from: script)
//Objective-C
[self.uiWebView stringByEvaluatingJavaScriptFromString:script];
###サンプルコード
例としてweb側のコードで定義された関数を実行する場合のサンプルコードを以下に記述します。
HTML + JavaScript(Web側のコード)
function sum(a, b) {
return a + b;
}
iOS(ネイティブ側のコード)
//Swift
var jsScript = "sum(2,4)"
let result = uiWebView.stringByEvaluatingJavaScript(from: jsScript)
print(result) // 6
//Objective-C
int jsScript;
jsScript = "sum(2,4)";
id result = [self.uiWebView stringByEvaluatingJavaScriptFromString:script];
printf(result); // 6
#WKWebViewでのJavaScriptの実行
WKWebViewのViewに対してevaluateJavaScriptという関数を実行する事で、引数に設定されているJavaScriptの関数が実行されます。
//Swift
wkWebView.evaluateJavaScript(script) { (result, error) in
}
//Objective-C
[self.wkWebView evaluateJavaScript:script completionHandler:^(id _Nullable result, NSError * _Nullable error) {
}];
サンプルコード
例として先ほどとは違い表示したWebページのタイトルとURLを表示します。
SwiftとObjective-CどちらもTitleを取得するときはdocument.titleを、URLを取得するときはdocument.urlを実行します。
//Swift
let script = "document.title"
wkWebView.evaluateJavaScript(script) { (result, error) in
var title = result
print(title) //表示したWebページのタイトル
}
//Objective-C
NSString *script = @"document.url";
[self.wkWebView evaluateJavaScript:script completionHandler:^(id _Nullable result, NSError * _Nullable error) {
int url = result;
printf(url) //表示したWebページのURL
}];
参考リンク
https://dev.classmethod.jp/references/ios-8-wkwebview-title-url/
http://nkimra.hatenablog.com/entry/2015/09/30/002419
https://www.techgaku.com/archives/54
https://studio.beatnix.co.jp/develop/swift/wkwebview-javascript/