【问题标题】:Pass variables from Objective-C to javascript function?将变量从Objective-C传递给javascript函数?
【发布时间】:2012-02-01 17:59:52
【问题描述】:

我有一个简单的 javascript 函数,它需要两个变量。我需要将我的 Objective-C (iOS) 应用程序中已有的两个变量传递给这个 javascript 函数。我运行 javascript 的代码行是:

[webView stringByEvaluatingJavaScriptFromString:@"onScan()"];

javascript 函数只是将这两个变量应用于 HTML 表单并提交。由于变量丢失,我当然在我的表单中变得未定义。 8-) 我一直找不到很多关于这方面的文档,但也许我找错地方了?

FWIW,我的 Objective-C 变量是字符串。我的javascript函数是onscan(a,b)

更新:

我可以通过在每个传递给 javascript 函数的变量周围放置单引号来实现此功能。更新后的代码是:

[webView stringByEvaluatingJavaScriptFromString:@"onScan('%@','%@')",a,b];

【问题讨论】:

    标签: javascript objective-c function variables


    【解决方案1】:

    stringByEvaluatingJavaScriptFromString: 接受NSString,因此您只需使用stringWithFormat:%@ 对象格式化程序组合字符串,如下所示:

    NSString *stringOne = @"first_parameter";
    NSString *stringTwo = @"second_parameter";
    
    NSString *javascriptString = [NSString stringWithFormat:@"onScan('%@','%@')", stringOne, stringTwo];
    
    [webView stringByEvaluatingJavaScriptFromString:javascriptString];
    

    查看 Apple 的 NSString 文档,这是一个非常有用的对象!

    【讨论】:

    • 谢谢,我已经尝试过了,但我无法将任何东西传递给我的 UIWebView。我把代码放回去(就像你上面那样)并将字符串放入 NSLog 以确保事情是洁净的,但由于某种原因,javascript 函数没有使用使用这种方法传递给它的那些变量。奇怪的是,当我没有在字符串中放置任何变量时,我在表单文本值框中得到一个未定义的值。
    • 我能够通过将要传递给函数的变量包装在单引号中来解决这个问题。我已经用答案更新了我的问题。
    • 哎呀,感谢您发现这一点,我也更新了我的答案。我一直被这种我忘记了什么的感觉所困扰......
    • @jrtc27 我无法回答我自己的问题,因为我的声誉低于 100 并且没有足够的时间过去,但是即使我已经尝试了 Jack Lawrence 的第一次回复,我还是将答案授予了他。缺少的部分是包裹在变量周围的单引号。
    • 只要都排序好了 :)
    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多