Как передать параметры в JavaScript-функцию из iOS с использованием Objective-C?

Здравствуйте! У меня возникла проблема при попытке вызвать JavaScript-функцию с параметрами из iOS-приложения. Я использую метод evaluateJavascript, но значения параметров не передаются корректно.

Вот мой код на Objective-C:

-(void) вызватьJSФункцию:(NSString*)значение {
  // Пример: значение = @"Яблоко"
  [self.вебВью evaluateJavascript:@"примерФункции(значение, '\(некаяКонстанта)')" completionHandler:nil];
}

А вот JavaScript-функция:

function примерФункции(параметр1, параметр2) {
  console.log("Значения: " + параметр1 + ", " + параметр2);
}

В консоли я получаю ошибку:
ReferenceError: Не удается найти переменную: значение

Функция вызывается успешно, но переменная не передается. Есть ли проблема в синтаксисе вызова функции через evaluateJavascript? Я проверил, что переменная значение содержит данные.

Подскажите, пожалуйста, как правильно передать параметры в JavaScript-функцию из iOS?

Проблема в том, что ты передаешь параметры как голый текст, а не как строки. Вот рабочий вариант:

NSString *jsCode = [NSString stringWithFormat:“примерФункции(‘%@’, ‘%@’)”,
[значение stringByReplacingOccurrencesOfString:“'” withString:“\'”],
некаяКонстанта];
[self.вебВью evaluateJavascript:jsCode completionHandler:nil];

Так параметры будут переданы корректно. Не забудь обработать случай, если в значениях есть кавычки. Это должно решить твою проблему.

слушай, у меня была похожая проблема недавно. чтобы передать параметры в js, нужно их экранировать. попробуй так:

NSString *jsКод = [NSString stringWithFormat:@“примерФункции(‘%@’, ‘%@’)”, [значение stringByReplacingOccurrencesOfString:@“'” withString:@“'”], некаяКонстанта];
[self.вебВью evaluateJavascript:jsКод completionHandler:nil];

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

Похоже, проблема в том, как ты передаешь параметры. Попробуй обернуть значение в кавычки и использовать stringWithFormat:

NSString *js = [NSString stringWithFormat:@“примерФункции(‘%@’, ‘%@’)”, значение, некаяКонстанта];
[self.вебВью evaluateJavascript:js completionHandler:nil];

Так JavaScript получит строковые параметры. Еще можно попробовать JSON.stringify для сложных объектов. Дай знать, если поможет!