1

这是我的ios代码

webView             =   [[UIWebView alloc] init];
webView.delegate    =   self;

[webView loadHTMLString:@"<script type=\"text/javascript\" src=\"myFile.js\"></script>" baseURL:[NSURL fileURLWithPath:[NSBundle mainBundle].resourcePath]];

NSString* result =(NSString*)[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"myFunction(%d,%d,%d)", num1,num2,num3]];

NSLog(@"RESULT1 : %@", result);

这是 myFile.js

function myFunction(a,b,c)
{
   return a*b*c;
}

我在结果字符串中没有得到任何东西。我错了吗??

4

1 回答 1

0

加载 webview 后,您应该等待webViewDidFinishLoad:webview 完成加载时调用的回调。

像这样实现委托方法,

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString* result = (NSString*)[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"myFunction(%d,%d,%d)", num1,num2,num3]];
    NSLog(@"RESULT1 : %@", result);
}

此外,检查您myFile.js是否存在于Copy Bundle Resources下,而不是Target->Build Phases的Compile Sources部分下。


我不是 JS 专家,但您的 JS 函数的语法似乎很奇怪。通常语法是

function myFunction(a,b,c)
{
   //Check if this alert gets called
   alert('Function called');
   return a*b*c;
}

请检查。

希望有帮助!

于 2013-11-12T07:21:28.770 回答