Как запустить код javascript из поля ввода HTML?

В настоящее время я пытаюсь запустить код JavaScript из поля ввода HTML для моего проекта онлайн-компилятора кода.

function runCode(){
     let code = document.getElementById('code').value
     console.info(code)
}

Я ожидал, что он действительно запустит код, а не просто зарегистрирует его как строку.

в этом вопросе отсутствуют детали и ясность. какой код вы пытаетесь запустить из ввода? Что вставляется во вход? что должно произойти с кодом? Console.log делает именно то, на что указывают названия: создает журнал, который используется для отладки (аналогично var_dump)

tacoshy 09.12.2022 21:42

«Запустить код JavaScript из поля ввода HTML» когда? Когда значение ввода изменяется? Когда пользователь нажимает кнопку? Каждые 100 мс? Код JS обычно запускается в ответ на что-то еще.

Jared Smith 09.12.2022 21:43

Извиняюсь за отсутствие подробностей, тороплюсь. Да, он должен запускать функцию runCode при нажатии кнопки HTML, мне нужно, чтобы она запускала действительно любой код JavaScript, такой как алгоритмы, массивы и данные.

Matthew H 09.12.2022 21:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
68
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Используйте eval()

run.onclick =() => {
  eval(editor.value)
}
<textArea id = "editor">console.info('test')</textArea>
<button id = "run">run</button>

В любой момент. не стесняйтесь выбирать его как правильный ответ

Brother58697 09.12.2022 21:55

Имейте в виду, что это отличный способ разрешить пользователям вашего сайта запускать произвольный javascript; вы в основном говорите: «Вставьте сюда свою полезную нагрузку XSS!» и запустить его для них.

Daniel Beck 09.12.2022 22:10

Это хорошо, если вы просто играете и получаете удовольствие от изучения 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)();

Спасибо, и да, у меня было ощущение, что я получу комментарий по этому поводу, и я просто использую это как личный проект и на самом деле не буду размещать это в Интернете.

Matthew H 09.12.2022 21:55

Мне просто нужно было сказать в качестве меры предосторожности не только вам, но и всем, кто прочитает это в будущем. Принятие кода, написанного посетителями вашего веб-сайта, сопряжено с большим риском для безопасности. Это не было целью оскорбить или подорвать вас.

Ryan Wheale 09.12.2022 21:56

Собираетесь ли вы запускать код на элементе ввода html? когда? Должно быть как минимум событие. Вы можете запускать функцию, когда нажимаете ввод или фокусируетесь, меняете и так далее. есть несколько решений, таких как onfocus, onkeypress, onkeyup, onchange, onclick

Вопросы по теме следует оставлять в комментарии. Раздел «Ответ» предназначен для конкретных ответов на вопрос. В большинстве случаев они включают примеры кода.

Neil Hoff 14.12.2022 15:49

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