色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

jquery 觸發ocli

傅智翔2年前12瀏覽0評論

jQuery是一款廣泛應用于Web開發中的JavaScript庫。它可以簡化JavaScript開發,從而降低開發者的工作量。jQuery可以方便地操作DOM,使得頁面元素的操作更為簡單,同時還提供了豐富的插件支持。而在iOS開發中,可以通過jQuery觸發OC的代碼。

jQuery提供了一個方便的方法來觸發Objective-C代碼,即使用document.location.href。因為使用document.location.href可以在Web和原生代碼之間進行雙向通信,所以它成為了一個非常好的解決方案。

//js代碼
var url = "objc://testFunction?param1=xxx¶m2=yyy";
document.location.href = url;

在Objective-C中,需要在對應的webView的delegate方法中實現該方法。具體的實現如下:

//Objective-C代碼
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{
NSString *url = [[request URL] absoluteString];
//判斷url是否為委托方法
if ([url hasPrefix:@"objc://"]) {
NSArray *components = [url componentsSeparatedByString:@"://"];
NSString *methodName = (NSString *)[components objectAtIndex:1];
NSArray *params = [methodName componentsSeparatedByString:@"?"];
if (params.count == 2) {
methodName = [params objectAtIndex:0];
NSDictionary *paramsDict = [self getParamsDict:[params objectAtIndex:1]];
NSLog(@"%@", paramsDict);
}
return NO;
}
return YES;
}
- (NSDictionary *)getParamsDict:(NSString *)paramsStr {
NSArray *paramsArray = [paramsStr componentsSeparatedByString:@"&"];
NSMutableDictionary *paramsDict = [NSMutableDictionary dictionary];
for (NSString *paramStr in paramsArray) {
NSArray *array = [paramStr componentsSeparatedByString:@"="];
if (array.count == 2) {
NSString *key = [array objectAtIndex:0];
NSString *value = [array objectAtIndex:1];
[paramsDict setObject:value forKey:key];
}
}
return paramsDict;
}

以上代碼實現了當頁面中出現以"objc://"開頭的URL請求時,就會執行webView:shouldStartLoadWithRequest:navigationType:方法。在這個方法中,首先獲取完整的請求URL。根據請求URL的格式,解析出需要調用的方法名稱和方法參數。最后,執行相應的方法。

通過上述代碼,我們可以使用jQuery觸發Objective-C的代碼,實現更豐富、更靈活的交互效果。