歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C與js相互調用及傳參數注意

Objective-C與js相互調用及傳參數注意

日期:2017/3/1 9:56:14   编辑:Linux編程

1、Objective-c調用js方法,只是需要調用uiwebview自帶的方法就可以了。

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(‘%@’)",htmlStr]];

2、js調用Objective-c方法,這時就需要和js約定一個參數或者方法了。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

在這個回調方法中,我們會得到服務器傳過來的數據request,我們可以判斷穿過來的參數,然後進行判斷調用oc的方法。

if ([request.URL.scheme isEqualToString:@"gethtmlstring"]) {

NSString *htmlStr = [self getHtmlString:description];
htmlStr = [htmlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(\"%@\")",htmlStr]];
}

這樣就實現了對Objective-C的調用了。

在這裡特別值得注意的問題:我這裡傳了html格式的參數。我在這裡就遇到了,傳過去的參數始終不對,無法調用js的方法。

stringWithContentsOfFile,這個方法用來讀取文件,如果不指定編碼方式的話,有可能造成數據的丟失,所以我這裡指定了utf-8的編碼方式。 在傳參數的時,還有可能的一種問題。這個參數裡面如果帶有(\r \n ')等等, js那邊收不到這個值, 這些帶\的需要轉義, 如下這麼寫js才能收到完整的消息:

message = [message stringByReplacingOccurrencesOfString:@"\n" withString:@"\\\\n"];
NSString *jsMethod = [NSString stringWithFormat:@"JsMethod(\"%@\")", message]

例子代碼:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2013年資料/6月/9日/Objective-C與js相互調用及傳參數注意

Copyright © Linux教程網 All Rights Reserved