Android: функция Javascript не продолжается после eval () - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь выполнить произвольную функцию Javascript в Android WebView и получить ее результат.Чтобы вызвать функцию, я использую loadUrl (), а также добавил интерфейс Javascript, который должен вызываться с результатом.Вот как выглядит JS, который я пытаюсь выполнить из loadUrl ():

(function () {
  var res = eval(foo());
  MyInterface.setResult(res); 
})()

foo обозначает имя функции, которую я пытаюсь вызвать, и MyInterfaceэто интерфейс, который я добавил ранее.Когда я делаю это, foo() действительно вызывается, но следующий вызов - нет.Я попытался изменить MyInterface.setResult(res); на более простые операторы JS, такие как console.log("finished"), но после eval() ничего не выполняется.Если я удаляю eval, следующая инструкция выполняется.Есть идеи, что здесь происходит?

1 Ответ

2 голосов
/ 21 ноября 2011

eval принимает строку. Он пытается вызвать строку, которую возвращает foo.

Попробуйте eval ("foo ()");

edit: вы также можете просто вызвать функцию без eval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...