从ios uiwebview调用AngularJS控制器函数

Calling AngularJS controller function from ios uiwebview

本文关键字:控制器 函数 AngularJS 调用 ios uiwebview      更新时间:2023-09-26

我有dashboard.html页面和DashboardController.js与dashboard.html相关联。我在UIWebview加载页面,现在我想从DashboardController.js从UIWebview调用一个angularjs函数。它不会被调用。

下面是我在iOS中尝试的代码

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSURL *url = [request URL];
    NSLog(@"URL:%@",url);
    if (![Utility isInternetAvailable]) {
        return FALSE;
    }
    NSString *jsCallBack = [NSString stringWithFormat:@"DashboardController.test()"];
    NSString *response =  [webView stringByEvaluatingJavaScriptFromString:jsCallBack];
    NSLog(@"%@",response);
    return YES; // Return YES to make sure regular navigation works as expected.
}

在确保dashboard.html已加载到uiwebview中后,我也尝试了没有控制器参考。NSString *jsCallBack = [NSString stringWithFormat:@"test()"];

而test()是在我的DashboardController.js作用域中的js函数。

function test (){
  alert('sendCredentialsToNativeApp');
}

如果您在控制器JS中没有定义控制器引用,则应该调用此test()方法。但是,这只能在页面就绪状态之后才可用,因为在加载完成之前,您无法从控制器调用任何方法。