UIWebViewにJSのライブラリを動的に読み込ませる方法
UIWebView で表示している HTML ページに Javascript ライブラリを動的に読み込ませる方法です。
使う場面はそうないと思いますが、興味本位で試してみたらできたので記事にしました。Google Libraries API という Javascript のライブラリを使うと簡単に出来ます。
下記は Google Maps のライブラリを動的に読み込んで位置情報を取得するサンプルコードです。
@interface SmapleViewController { UIWebView *webView; } @property (retain, nonatomic)IBOutlet UIWebView *webView; @end @implements SmapleViewController @synthesize webView; - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *script = @"var script = document.createElement('script');" @"script.src='http://www.google.com/jsapi?key=ABCDEFG&callback=loadLibs';" @"script.type='text/javascript';" @"document.getElementsByTagName('head').item(0).appendChild(script);" @"function loadLibs() {google.load('maps', '3', {'other_params':'sensor=false','callback' : libsLoaded});}" @"function libsLoaded() {navigator.geolocation.getCurrentPosition(function(position){}){});}"; [webView stringByEvaluatingJavaScriptFromString:script]; } @end
なお Javascrpt のコードはGoogle AJAX API Loaderと AJAX Libraries APIを参考にしました。
サンプルでは Google Maps API を読み込ませましたが他にも以下のライブラリが使えます。