在执行任何其他脚本之前,我需要在我的UIWebView中加载一些js代码。不幸的是,似乎HTML document.onload
在objective-c webViewDidFinishLoad
回调之前执行。
检查此测试代码:
- (void)viewDidLoad {
[super viewDidLoad];
webView.delegate = self;
[webView loadHTMLString:@"<body onload=\"alert('this is from html')\"></body>" baseURL:nil];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:@"alert('this is from obj-c')"];
}
消息“这是来自html”始终显示在消息“this is from obj-c”之前。
考虑到我无法控制我的html页面,我需要反过来考虑,所以我必须假设有一个document.onload
函数被调用。
答案 0 :(得分:0)
......好的发现......
我需要使用webViewDidStartLoad
代替webViewDidFinishLoad
。
令我惊讶的是,在webViewDidStartLoad
回调期间注入的jscode可用于加载的HTML页面。这对我来说意味着在webViewDidStartLoad
之后没有重置UIWebView javascript引擎,这对我来说很好。