Вызов функции Javascript с параметрами из iOS ObjC

Я пытаюсь вызвать функцию Javascript с параметрами из iOS, используя «evaluateJavascript», все работает нормально, но значение параметров не отправляется, см. Код ниже

      -(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

Я могу вызвать функцию, но не могу передать переменную. Есть ли проблема с синтаксисом при вызове функции с оценкойJavascript?

Примечание. Я проверил, что val имеет значение.

1 ответ

Вам нужно создать строку, содержащую переданный аргумент, и использовать ее в качестве параметра для . Как это:

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

Однако в зависимости от того, откуда берется значение параметра, вы должны убедиться, что внедрение кода невозможно!

Другие вопросы по тегам