[英]Catching JavaScript asynchronous calls with Objective-c
我使用UIWebViewDelegate
捕获了javascript
调用。
看起来像:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSDictionary *dictionary = [[[JSBridgeController alloc] init] js:request];
if (dictionary) {
if ([dictionary[@"methodName"] isEqualToString:@"gimmeUser"]) {
[self.delegate gimmeUserJS: dictionary];
}
if ([ dictionary[@"methodName"] isEqualToString:@"initMe"]) {
[self.delegate initMeJS: dictionary];
}
}
return YES;}
对我来说,问题出在网络方面。 它具有上述代码中的数十个此类JS
请求,并将它们异步发送。 因此,如果我同时收到两个请求,则webview委托只能看到其中一个,而忽略另一个。
我尝试使用NSOperationQueue
和NSURLConnection sendAsynchronousRequest
但没有成功。
如何为每个异步JS
请求调用shouldStartLoadWithRequest
委托?
谢谢你的帮助..
一种解决方法是为视图生成唯一的标识符。
然后,将其存储在引用了您的视图的字典中。 然后,您的视图可以导航到JS中的“ callback:callback?id =“ + your_passed_id,从而将标识符传回。
if ( [[[inRequest URL] scheme] isEqualToString:@"callback"] ) {
//then use the query string and parse for id
//in order to have individual control over callbacks
NSString *queryString = [[inRequest URL] query];
}
有关回调模式的更多信息,请参见: UIWebView回调C / Objective-C中的Javascript
我知道这很复杂,但这是一个解决方案……祝您好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.