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.