使用参数调用JS的UIWebView将不起作用

时间:2012-07-06 06:34:58

标签: javascript ios uiwebview

我有一个带有HTML页面的UIWebView。现在我想在HTML中调用一个JS函数,并从其中传递Objective-C变量中的一些值。

-  (void) webViewDidFinishLoad:(UIWebView *)_webView{
    NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC(%@)", @"hello"]];

    NSLog(@"webViewDidFinishLoad %@", @"YES");
}

HTML文件中的JS函数:

  function initWithDataFromObjC(param1) {
           alert(param1);        
  }            

当我在模拟器中运行应用程序时,它有时会加载我的HTML正确,有时会卡住并且没有完成加载。但是它没有显示“你好”的弹出窗口!

如果我将编码更改为以下内容:

-  (void) webViewDidFinishLoad:(UIWebView *)_webView{
    NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:@"initWithDataFromObjC()"];

    NSLog(@"webViewDidFinishLoad %@", @"YES");
}

没有任何参数的JS函数

function initWithDataFromObjC() {
      alert("hello");        
} 

第二个构造将运行没有任何问题。但是我想知道为什么当我尝试传递一些参数时我不能正常工作?

BR& THX,

mybecks

1 个答案:

答案 0 :(得分:4)

尝试:

 NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC('%@')", @"hello"]];

 NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC(\"%@\")", @"hello"]];