【问题标题】:iOS Use UIWebView to execute JavaScript string using Math.powiOS 使用 UIWebView 使用 Math.pow 执行 JavaScript 字符串
【发布时间】:2014-05-30 07:25:37
【问题描述】:

我想评估一个在 iOS 中用 JavaScipt 编写的字符串,并通过使用以下方法了解到我可以做到这一点: [self.webView stringByEvaluatingJavaScriptFromString:formula]

我使用的代码是:

NSString *formula = @"( 1.5 * Math.pow(2, 3) ) / 12"; formula = [NSString stringWithFormat:@"eval('%@')", formula]; NSInteger value = [[self.webView stringByEvaluatingJavaScriptFromString:formula] integerValue];

问题在于 Math.pow 函数。如果我不使用它,我会从 webView 中获得真正的价值。如果我在字符串中有 Math.pow,我只会得到空字符串。 谁能帮助我如何更改代码以便我可以使用包含 Math.pow 的字符串?

【问题讨论】:

  • 您是否尝试将其包装到 javascript 方法中并在您的 js 方法中执行 f.e [[self.webView stringByEvaluatingJavaScriptFromString:@"javascript:myMethod();"] 执行所需的计算并打印输出编号跨度>
  • 你为什么需要它 -> 你可以在本地执行这样的计算
  • 我对 JS 不太擅长,所以那段代码会是什么样子?
  • 我从只能发送 JS 的服务器获取字符串:S

标签: javascript ios objective-c uiwebview eval


【解决方案1】:

问题出在这里:

NSInteger value = [[self.webView stringByEvaluatingJavaScriptFromString:formula] integerValue];

您将结果转换为整数值的位置。所以,它被四舍五入了。

正确的是:

float value = [[self.webView stringByEvaluatingJavaScriptFromString:formula] floatValue];

注意value 类型和使用floatValue 从字符串转换。

顺便说一句,你不需要评估,严格来说。

【讨论】:

  • 这对空字符串@""的JS结果没有影响。
  • 在我的情况下它正在工作,我在发布之前对其进行了测试。如果我使用 24 而不是 12,我得到 0.5
猜你喜欢
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2022-12-10
  • 1970-01-01
相关资源
最近更新 更多