我已经创建了一个IOS应用程序。
该应用程序具有MainViewController,它将从webViewController呈现/关闭Modal视图 nib文件(包含NavBar和UIWebView)。我想在UIWebView加载的每个网页中注入我的javascript函数,这些函数将在网页中调用,这意味着所有函数必须在页面加载完成之前完成加载。
我尝试了很多方法但看起来就像当ModalView再次出现时(它在第一次出现时工作正常)。该页面不知道我注入的功能。
所以我的问题是:
感谢阅读和任何帮助/建议。 :)
答案 0 :(得分:1)
如果在ModalView存在时UIWebView加载请求,我应该在哪里注入我的javascript?在loadRequest之前? didStartLoad? didFinishLoad?
在webViewDidFinishLoad:
。在此之前,您无法致电stringByEvaluatingJavaScriptFromString:
。遗憾的是,没有显示Web视图就没有好办法达到这一点,如果你的JavaScript改变太多,有时会导致视图“闪烁”。我有时会在Web视图上添加一个额外的视图,以便在webViewDidFinishLoad:
完成之后将其隐藏起来。
当关闭ModalView时,我应该如何处理UIWebView?加载about:空白请求?
无。它应该在释放模态视图时释放。
答案 1 :(得分:0)
如果在ModalView存在时UIWebView加载请求,我应该在哪里注入我的javascript?在loadRequest之前? didStartLoad? didFinishLoad?
我猜你的情况,如果用户点击你的目标链接或html元素,那么mainViewController将会出现presentModalView方法,对吧? (如果不是请纠正我)
如上所述,您可以在UIWebviewDelegate
中像这样调用javascript
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
{
NSString *url = [[inRequest URL] absoluteString];
/* separate your href string such as href="doMyFunction?presentView" */
NSArray *comp1 = [url componentsSeparatedByString:@"?"];
NSString * checker = [comp1 objectAtIndex:1];
if([checker isEqualToString:@"presentView"])
{
// do my code
}
}
当关闭ModalView时,我应该如何处理UIWebView?加载about:空白请求?
您的MainView已经掩盖了您的UIWebview,因此它取决于您的目的,如
希望它可以帮到你!