javascript uiwebview ios5 rgraph

Llamar a Javascript usando UIWebView



ios5 rgraph (2)

Intento llamar a un javascript en una página html usando la función -

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()"]; }

Aquí está el javascript en la página html -

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

Sin embargo, la función methodName() no se llama pero después de window.onload = function () todo funciona bien ...

Estoy intentando integrar RGraphs en mi aplicación y Basic.html es la página html en la que se escriben los javascripts.

Sería genial si alguien pudiera ayudarme con esto.


Para aclarar un poco más.

.h: implementar el UIWebViewDelegate

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

.metro

- (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();"]; }

También puede asignar al delegado del guión gráfico en lugar de hacerlo en el código.


Simple: Intenta ejecutar la función JS desde Objective-C antes de que la página incluso se haya cargado.

Implemente el método delegado de webViewDidFinishLoad: en su UIViewController y allí llama a [graphView stringByEvaluatingJavaScriptFromString:@"methodName()"]; para asegurarse de que se llame a la función después de que la página se haya cargado.