0

我在控制器中有以下内容,不明白为什么它没有调用页面中的函数(它没有做任何事情)。任何帮助表示赞赏 - 第一次使用这个:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *fullURL = @"http://local.com/js-more.html";  // this does laod
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [arcWebView loadRequest:requestObj];

    NSString * param  = @"foo";   
    NSString * jsCallBack = [NSString stringWithFormat:@"myFunc('%@')",param];
    [arcWebView stringByEvaluatingJavaScriptFromString:jsCallBack];

在网页中我有:

<script>

function myFunc(this_str){![enter image description here][1]
  alert('here is val: ' + this_str);
}
myFunc('here is in string');
</script>

这会在浏览器或嵌入式 UIWebView 中正确发出警报。

提前谢谢

编辑 1

在此处输入图像描述

4

1 回答 1

1

我将 javascript 放在 webviewdidfinishload 委托方法中。因为问题可能是您的网页尚未加载,即使您调用了加载请求。

设置 webviews 委托,将代码放在那里,它应该可以工作。

例如

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *fullURL = @"http://local.com/js-more.html";  // this does laod
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [arcWebView setDelegate:self];
    [arcWebView loadRequest:requestObj];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSString * param  = @"foo";   
    NSString * jsCallBack = [NSString stringWithFormat:@"myFunc('%@')",param];
    [webView stringByEvaluatingJavaScriptFromString:jsCallBack];
}
于 2012-10-24T03:35:20.540 回答