iOS UIWebView Javascript – 插入数据 – 接收callback?

我有一个网页。 我有一个JavaScript文件,做了很多东西。 在应用程序中我有一个NSString与一些关键的数据,需要在JavaScript文件中处理。 如何让我的string值到我的HTML的某个地方,所以我的JavaScript可以读取它?

此外,执行操作时(如按下button),JavaScript会产生一定的数据,我如何从webview / JavaScript检索数据,以便它可以存储在应用程序?

你可以调用一个JavaScript方法,并通过使用这个值传递

NSString *selectedValue = [webViewInstance stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getAndReturnRadioValue(%d)", questionCounterIntValue]]; 

但要从JavaScript触发,你需要使用一个解决方法,

实现以下webViewDelegate方法

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ NSLog(@"passed data from web view : %@",[[request URL] query]); if([[[request URL] query] isEqualToString:@"clickedOnLineNo"]) { //Do your action here } } 

你必须从你的javascript方法导航到一个假的URL,

 window.location = "someLink://yourApp/form_Submitted:param1:param2:param3"; 

点击一个button或您需要的操作。

你可以看看我的这个问题的答案在UIWebView中提交一个表单

 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 

听起来就像你需要的方法。 例如,如果需要与JavaScript进行交互的input和输出可以使用单一方法完成,则可以将值传递给JavaScript,并使用如下代码获得结果:

 NSString* jsCode = [NSString stringWithFormat:@"doSomething('%@')", dataToPass]; NSString* resultFromJavaScript = [webView stringByEvaluatingJavaScriptFromString:jsCode]; 

嗨,我们可以从目标C的数据发送到JavaScript,并可以轻松地从JavaScriptcallback

objectve c – > javaScript

在对象c类

 NSData *locationCountData = [NSJSONSerialization dataWithJSONObject:locationCount options:NSJSONWritingPrettyPrinted error:nil]; NSString *locationCountString = [[NSString alloc] initWithData:locationCountData encoding:NSUTF8StringEncoding]; NSData *locationCountData = [NSJSONSerialization dataWithJSONObject:locationCount options:NSJSONWritingPrettyPrinted error:nil]; NSString *locationCountString = [[NSString alloc] initWithData:locationCountData encoding:NSUTF8StringEncoding]; NSString *str = [NSString stringWithFormat:@"testFunction(%@,%@)",locationCountString, locationsListString]; [self.myWebView stringByEvaluatingJavaScriptFromString: str]; 

在JavaScript文件中

 <script type="text/javascript"> function testFunction(locationCount,locationList) { alert(locationCount + locationList); } </Script>