В настоящее время я пытаюсь запустить код JavaScript из поля ввода HTML для моего проекта онлайн-компилятора кода.
function runCode(){
let code = document.getElementById('code').value
console.info(code)
}
Я ожидал, что он действительно запустит код, а не просто зарегистрирует его как строку.
«Запустить код JavaScript из поля ввода HTML» когда? Когда значение ввода изменяется? Когда пользователь нажимает кнопку? Каждые 100 мс? Код JS обычно запускается в ответ на что-то еще.
Извиняюсь за отсутствие подробностей, тороплюсь. Да, он должен запускать функцию runCode при нажатии кнопки HTML, мне нужно, чтобы она запускала действительно любой код JavaScript, такой как алгоритмы, массивы и данные.



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


Используйте eval()
run.onclick =() => {
eval(editor.value)
}<textArea id = "editor">console.info('test')</textArea>
<button id = "run">run</button>В любой момент. не стесняйтесь выбирать его как правильный ответ
Имейте в виду, что это отличный способ разрешить пользователям вашего сайта запускать произвольный javascript; вы в основном говорите: «Вставьте сюда свою полезную нагрузку XSS!» и запустить его для них.
Это хорошо, если вы просто играете и получаете удовольствие от изучения JavaScript и многого другого. Это не то, что вы просто хотите выложить в сеть, если у вас нет такого опыта. Если вы решите разместить его в Интернете, убедитесь, что чей-либо код не сохранен в базе данных. Вы не хотите, чтобы пользователь А писал код, который может выполняться на компьютере пользователя Б. Учитывая ваш уровень опыта, я бы просто сказал "не делайте этого". Без дальнейших церемоний:
const userInput = 'console.info("Hello World");';
// method 1
eval(userInput);
// method 2
new Function(userInput)()
Если вы хотите разрешить экспериментальные функции javascript и другие новые функции JS, вам нужно будет использовать автономную версию Babel для преобразования кода в первую очередь. Что-то вроде этого:
<script src = "https://unpkg.com/@babel/standalone/babel.min.js"></script>
const userInput = 'console.info("Hello World");';
var output = Babel.transform(userInput, { presets: ["env"] }).code;
eval(output);
new Function(output)();
Спасибо, и да, у меня было ощущение, что я получу комментарий по этому поводу, и я просто использую это как личный проект и на самом деле не буду размещать это в Интернете.
Мне просто нужно было сказать в качестве меры предосторожности не только вам, но и всем, кто прочитает это в будущем. Принятие кода, написанного посетителями вашего веб-сайта, сопряжено с большим риском для безопасности. Это не было целью оскорбить или подорвать вас.
Собираетесь ли вы запускать код на элементе ввода html? когда? Должно быть как минимум событие. Вы можете запускать функцию, когда нажимаете ввод или фокусируетесь, меняете и так далее. есть несколько решений, таких как onfocus, onkeypress, onkeyup, onchange, onclick
Вопросы по теме следует оставлять в комментарии. Раздел «Ответ» предназначен для конкретных ответов на вопрос. В большинстве случаев они включают примеры кода.
в этом вопросе отсутствуют детали и ясность. какой код вы пытаетесь запустить из ввода? Что вставляется во вход? что должно произойти с кодом? Console.log делает именно то, на что указывают названия: создает журнал, который используется для отладки (аналогично var_dump)