【问题标题】:Get a javascript variable's value in iOS app在 iOS 应用程序中获取 javascript 变量的值
【发布时间】:2013-12-26 07:50:38
【问题描述】:

我需要访问在脚本的 try 块中声明的 javascript 变量

var ErrorResponse = "";

在我的 iOS 应用程序中。我对 javascript 不太了解,这就是为什么我无法找到解决方法的原因。我正在使用这个:

NSString *jsString = @"var temp = ErrorResponse; return temp";
NSString *myFieldValue1 = [self.viewYTParser stringByEvaluatingJavaScriptFromString:jsString];

检索值,但它返回一个空字符串。

【问题讨论】:

  • var ErrorResopnse = ""; 为空。为其设置一个值,例如:var ErrorResopnse = "Foo";
  • 初始化时为空。稍后在代码中设置一个值

标签: javascript ios iphone uiwebview


【解决方案1】:

以下是应该发挥作用的代码:

NSString *errorResponse = [self.viewYTParser stringByEvaluatingJavaScriptFromString:@"ErrorResponse"];

每次您需要检索ErrorResponse 的最新值时,只需执行此行即可。

您不应使用 return 关键字。
如果您希望您的 JS 从 stringByEvaluatingJavaScriptFromString 返回任何值,那么它应该是您经常在常规 JS 函数中 return 关键字之后编写的东西 - 没有 return 字本身。

【讨论】:

  • 你确定这个变量在你执行这一行的时候有值吗?
  • 是的。只是为了检查我还初始化了它 var ErrorResopnse = "something";但仍然没有得到任何东西
  • 我发现了问题所在。它无法访问,因为它是在本地声明的。我将它声明为全局变量并且它起作用了。但现在的问题是我不应该在脚本中进行更改,我将不得不访问局部变量。我该怎么做?
  • 创建一个全局变量并保持局部变量不变。将局部变量的值赋给全局变量,然后使用 stringByEvaluatingJavaScriptFromString
  • @san 嗨,我本可以这样做,但正如我在上面的评论中所说,我不应该更改脚本。
【解决方案2】:
// simplified expression, no function needed
NSString *expr = @"document.getElementById('myDiv').offsetHeight / document.getElementById('myDiv').style.lineHeight";
// now pass it to the web view and parse the result
int lines = [[self.webView stringByEvaluatingJavaScriptFromString:expr] intValue];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 2012-04-10
    • 2013-06-07
    • 2012-04-14
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多