[英]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.