【问题标题】:webViewDidFinishLoad not calling when having javascript content in webpage网页中有 javascript 内容时 webViewDidFinishLoad 不调用
【发布时间】:2013-04-22 20:21:49
【问题描述】:
我在一个项目中使用UIWebView。有时它不会调用webViewDidFinishLoad 方法。因为网页有一些javascripts。方法
- (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest: (NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType
正在接到电话,但 webViewDidFinishLoad 没有。我想抓住那个方法。因为我在 webview 开始加载时开始动画。然后我想在它完成时停止这个动画。它不适用于具有 javascript 内容的网站。请问大家有什么想法吗?
谢谢
【问题讨论】:
标签:
javascript
iphone
ios
uiwebview
uiwebviewdelegate
【解决方案1】:
webViewDidFinishLoad 方法在 UIWebView 完成加载 url 时被调用,在你的情况下,因为你调用的是 javascript,它不会加载你的内容,它只是调用你的 javascript 函数已加载webview。但是YES 你可以用你下面所说的同样的方法来捕捉 javascript 动作
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSString *url = [[request URL] absoluteString];
if(navigationType == UIWebViewNavigationTypeLinkClicked){
if([url rangeOfString:@"SOMETHING"].length > 0 ){
//if your action returns something appended in your url like the anchors work
//DO YOUR STUFFS
}
}
return TRUE;
}
【解决方案2】:
显然,ios 中的 webview 专门检查 html 的 dom 中的“iframe”标签,如果找到,它也会基于该标签创建事件。因此,一个简单但不完整的解决方案是在正在更改的 dom 部分添加以下代码(例如,在每个部分的实际模板中):
<iframe></iframe>
为我做了诀窍..