使用UIWebView调用Javascript

我正在尝试使用函数在HTML页面中调用一个JavaScript –

View did load function { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"BasicGraph.html"]; NSURL *urlStr = [NSURL fileURLWithPath:writablePath]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:@"BasicGraph" ofType:@"html"]; [fileManager copyItemAtPath:myPathInfo toPath:writablePath error:NULL]; [graphView loadRequest:[NSURLRequest requestWithURL:urlStr]]; } - (void) webViewDidFinishLoad:(UIWebView *)webView { [graphView stringByEvaluatingJavaScriptFromString:@"methodName()"]; } 

这是HTML页面上的JavaScript –

 <script> function methodName() { // code to draw graph } 

但是,函数methodName()没有被调用,但在window.onload = function()之后,一切正常工作。

我正在尝试将RGraphs集成到我的应用程序中,并且Basic.html是写入JavaScript的html页面。

如果有人能帮我解决这个问题,那将会很棒。

简单:在页面加载之前,您尝试从Objective-C执行JS函数。

实现UIWebView的委托方法 webViewDidFinishLoad:在你的UIViewController中,在那里调用[graphView stringByEvaluatingJavaScriptFromString:@"methodName()"]; 以确保该函数在页面加载后被调用。

澄清一点点。

.h – 实现UIWebViewDelegate

 @interface YourViewController : UIViewController <UIWebViewDelegate> @property (weak, nonatomic) IBOutlet UIWebView *webView; @end 

.M

 - (void)viewDidLoad { [super viewDidLoad]; NSString *path = @"http://www.google.com"; [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:path]]]; _webView.delegate = self; //Set the webviews delegate to this } - (void) webViewDidFinishLoad:(UIWebView *)webView { //Execute javascript method or pure javascript if needed [_webView stringByEvaluatingJavaScriptFromString:@"methodName();"]; } 

您也可以从故事板中分配委托,而不是在代码中执行。