Mon problème est que lorsque j'essaie d'appeler une fonction javascript qui existe dans mon application AngularJS à partir d'une UIWebView, cette fonction n'est pas reconnue. Lorsque j'appelle la fonction dans une structure html typique, la fonction est reconnue comme prévu. Exemple fourni ci-dessous:
OBJECTIF C:
- (void)viewDidLoad { [super viewDidLoad]; // CODE GOES HERE _webView.delegate = self; // LOAD THE CHABACORP HOMEPAGE WITH INITIAL UIWEBVIEW NSString *fullURL = @"http://testing.com"; NSURL *url = [NSURL URLWithString:fullURL]; NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:requestObj]; } - (void)webViewDidFinishLoad:(UIWebView *)webView{ [_webView stringByEvaluatingJavaScriptFromString:@"testing()"]; }
CONTRÔLE ANGULARJS:
'use strict'; angular.module('testing.controllers', []) .controller('Testing', function($scope) { function testing() { alert('testing'); } });
HTML de base (TRAVAIL AVEC OBJECTIF COURANT-C):
<!DOCTYPE HTML> <html> <body> <SCRIPT> function testing() { alert('testing'); } </SCRIPT> </body> </html>
C'est parce que votre fonction de testing
n'est pas disponible sur le marché mondial. Il est uniquement disponible dans votre fonction de contrôleur de Testing
. Pour le rendre globalement disponible, vous devez modifier le contrôleur comme étant ceci:
'use strict'; angular.module('testing.controllers', []) .controller('Testing', function($scope) { window.testing = function() { alert('testing'); } });
Je ne peux pas dire que je vous recommande de le faire, mais il est difficile de juger, car nous ne savons pas plus pourquoi vous voulez faire cela.