我应该使用哪种方法注入javascript?(字符串ByEvaluatingJavaScriptFromString)

Which method should i inject javascript? (stringByEvaluatingJavaScriptFromString)

本文关键字:字符串 ByEvaluatingJavaScriptFromString javascript 注入 方法 我应该      更新时间:2023-09-26

我已经创建了一个IOS应用程序。

该应用程序具有MainViewController,它将从webViewController中显示/取消模式视图nib文件(包含NavBar和UIWebView)。我想在UIWebView加载的每个网页中注入我的javascript函数,这些函数将在网页中调用,这意味着所有函数都必须在页面完成加载之前完成加载。

我尝试了很多方法,但当ModalView再次出现时(它在第一次出现时工作得很好)。页面不知道我注入的函数。

所以我的问题是:

  • 当ModalView出现时,如果UIWebView加载请求,我应该在哪里注入javascript?在loadRequest之前?didStartLoad?didFinishLoad
  • 关闭ModalView时,我应该如何处理UIWebView?加载about:black请求

感谢您的阅读和任何帮助/建议。:)

当ModalView出现时,如果UIWebView加载请求,我应该在哪里注入javascript?在loadRequest之前?didStartLoad?didFinishLoad?

在CCD_ 1。在此之前,您不能调用stringByEvaluatingJavaScriptFromString:。不幸的是,没有什么好的方法可以在不显示web视图的情况下达到这一点,如果您的JavaScript更改太多,有时会导致视图"闪烁"。有时我会在web视图上放置一个额外的视图来隐藏它,直到webViewDidFinishLoad:完成。

关闭ModalView时,我应该如何处理UIWebView?加载about:black请求?

什么都没有。它应该在模式视图被释放时被释放。

当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:black请求?

你的MainView已经掩盖了你的UIWebview,所以它取决于你的目的,比如

  • 更改一些信息
  • 隐藏某些组件
  • 什么都不做

希望它能帮助你!