【问题标题】:Call Javascript function with parameters from iOS ObjC使用来自 iOS ObjC 的参数调用 Javascript 函数
【发布时间】:2022-01-07 05:37:20
【问题描述】:

我正在尝试使用“evaluateJavascript”从 iOS 调用带有参数的 Javascript 函数,一切正常,但未发送参数值,请参阅下面的代码

-(void) callJavascriptFunc: (NSString*)val{
  //Example val is "Apple" string
  [self.webview evaluateJavascript:@"exampleFuncName(val, '\(someConstant)')" completionHandler: nil];
}

Javascript:

exampleFuncName(value1: string, value2: string){
   console.log("values == ", value1 + " , " + value2)
}

控制台: ReferenceError:找不到变量:val

我可以调用函数但不能传递变量。 使用 evaluateJavascript 调用函数时是否存在语法问题

注意:我已经检查过 val 有一个值。

【问题讨论】:

  • [self.webview evaluateJavascript:@"exampleFuncName('\(val)', '\(someConstant)')" completionHandler: nil];怎么样
  • 不,它只是给出字符串 val 而不是实际值 "Apple"
  • 啊,对不起。您正在使用 Objective-C 不迅速。那么呢:NSString* script = [NSString stringWithFormat:@"exampleFuncName(%@, '\(someConstant)')", val]; [self.webview evaluateJavascript:script completionHandler: nil];

标签: ios objective-c wkwebview evaluatejavascript


【解决方案1】:

您需要构建一个包含传递参数的字符串并将其用作evaluateJavascript 的参数。 像这样:

-(void) callJavascriptFunc: (NSString*)val{
    NSString* script = [NSString stringWithFormat:@"exampleFuncName('%@', '\(someConstant)')", val];
    [self.webview evaluateJavascript:script completionHandler: nil];
}

但是,根据参数值的来源,您应该确保不可能进行代码注入!

【讨论】:

    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多