У меня есть следующая функция, исходящая из вызова ajax, которая хранится в строковой переменной.
obj.action = "DisplayActivity('modalDisplay', 0, 4);"
Я пытаюсь запустить его, но безуспешно. Я пробовал:
eval(obj.action);
и с:
окно [obj.action]
Любые идеи? Спасибо.
DisplayActivity действительно существует? В противном случае в консоли могут возникать ошибки.
eval работает, конечно, только если функция, которую вы пытаетесь вызвать, находится в области видимости. window[obj.action] не имеет смысла.
да точно. функция уже определена. Я могу запустить его, просто вызвав DisplayActivity ('modalDisplay', 0, 4); в том же разделе кода. но мне нужно вызвать его из переменной, потому что он исходит со стороны сервера.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте использовать Новая функция:
let s = "console.info('Hello '+a)",
call = new Function('a', s)
call('world!')Обязательно избегайте вызова материалов из GET / POST, иначе это приведет к типичный xss, позволяющему изменить ваш DOM с помощью специальной созданной ссылки.
Полагаю, это проблема масштабирования.
Пытаться:
eval("global.tmp = function(DisplayActivity){" + obj.action + "};");
global.tmp(DisplayActivity);
Чтобы
evalработал, нужно где-то определятьDisplayActivity.