0

我正在尝试使用“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 有一个值。

4

1 回答 1

0

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

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

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

于 2022-01-07T09:04:22.153 回答