J'ai utilisé leWXWebComponent
代码,从新写了一个自己的WebComponent
fourni par weex lui-même et ajouté une méthode pour intercepter les requêtes Url, l'exposant aux fichiers weex.
Chaque fois que je télécharge un fichier depuismyWebView
拦截Url
跳到一个weex
文件,再次pop
回来的时候,再次点击myWebView
的时候,就没办法将callback
事件返回给weex
. Et le message d'erreur suivant apparaît
WeexDemo[23225:9905854] void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode
Publiez une partie du code de ma webView pour intercepter l'URL
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if (_startLoadEvent) { NSMutableDictionary *data = [NSMutableDictionary new]; [data setObject:request.URL.absoluteString ?:@"" forKey:@"url"]; [self fireEvent:@"pagestart" params:data]; } NSString * urlAbsoluteString= [request.URL absoluteString]; NSArray *schemes = self.schemesCallBacks.allKeys; for (NSString *scheme in schemes) { NSError *error = nil; NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:scheme options:NSRegularExpressionCaseInsensitive error:&error]; if (!error) { NSRange range = [regExp rangeOfFirstMatchInString:urlAbsoluteString options:NSMatchingReportProgress range:NSMakeRange(0, urlAbsoluteString.length)]; if (range.location != NSNotFound) { WXCallback callBack = self.schemesCallBacks[scheme]; callBack(@{@"url": [request.URL absoluteString]}); return NO; } } else { WXLog(@"created regExp error: %@", error); } } return YES; }
La valeur stockée dans self.schemesCallBacks est WXCallback ? Il est recommandé d'essayer plutôt WXKeepAliveCallback