OCとJavaScriptのインタラクション
2386 ワード
OCとJavaScriptのインタラクション#
UIWebViewがJavaScriptと対話する方法はstringByEvaluatingJavaScript FromStringです.
OCでJavaScriptメソッドを呼び出す##
ここのfirst()がJavaScriptメソッドです.
OCのJavaScriptへの注入方法##まず注入するJavaScriptメソッドを書きます: はfirstとして保存する.jsファイル、Xcodeプロジェクトにドラッグして、このjs: に注入します.は、上記のjsを注入し、jsのメソッドをいつでも呼び出すことができます.
JavaScriptでOCメソッドを呼び出す##
原理は、UIWebViewリダイレクト要求を利用して、いくつかのコマンドを私たちのUIWebViewに送信し、UIWebViewのエージェントメソッドでこれらのコマンドを受信し、コマンドに従って対応するOCメソッドを実行することです.これはJavaScriptでOCを呼び出す方法に相当する.まずJavaScriptメソッドを書きます: htmlでこのjsメソッドを呼び出します: 最終的にUIWebViewでこのリダイレクト要求をキャプチャする:
UIWebViewがJavaScriptと対話する方法はstringByEvaluatingJavaScript FromStringです.
OCでJavaScriptメソッドを呼び出す##
[webView stringByEvaluatingJavaScriptFromString:@"first();"];
ここのfirst()がJavaScriptメソッドです.
OCのJavaScriptへの注入方法##
function showAlert() {
alert('this is a alert');
}
// js
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"first" ofType:@"js"];
NSString *jsString = [[NSString alloc] initWithContentsOfFile:filePath];
// js
[webView stringByEvaluatingJavaScriptFromString:jsString];
JavaScriptでOCメソッドを呼び出す##
原理は、UIWebViewリダイレクト要求を利用して、いくつかのコマンドを私たちのUIWebViewに送信し、UIWebViewのエージェントメソッドでこれらのコマンドを受信し、コマンドに従って対応するOCメソッドを実行することです.これはJavaScriptでOCを呼び出す方法に相当する.
function sendCommand(paramOne,paramTwo) {
var url="testapp:"+paramOne+":"+paramTwo;
document.location = url;
}
function clickLink() {
sendCommand("alert"," ");
}
"button" value="Click me!" onclick="clickLink()" />
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *requestString = [[request URL] absoluteString];
NSArray *components = [requestString componentsSeparatedByString:@":"];
if ([components count] > 1 && [(NSString *)[components objectAtIndex:0] isEqualToString:@"testapp"]) {
if([(NSString *)[components objectAtIndex:1] isEqualToString:@"alert"])
{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Alert from Cocoa Touch" message:[components objectAtIndex:2]
delegate:self cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[alert show];
}
return NO;
}
return YES;
}