Я видел много предложений о том, как динамически добавлять код так: (источник):
var myScript = document.createElement("script");
myScript.setAttribute("type","text/javascript");
myScript.innerHTML += 'alert("Hello");';
document.body.appendChild(myScript);
В отличие от eval
так
eval('alert("Hello");');
Люди жалуются на снижение производительности и проблемы с безопасностью с помощью eval
, но я не могу себе представить, как добавление тегов <script>
будет быстрее или безопаснее.
EDIT люди хотели бы знать, почему я угадываю что-то как тривиальное, как alert("Hello")
, вот почему:
У меня есть база данных, скажем, 1 000 000 000 000 скриптов = P, очевидно, я не могу загрузить каждый, вместо этого пользователь может загружать все, что пожелает. Сценарии хранятся на серверах в произвольных местах. В настоящее время я запрашиваю (xmlhttprequest интерпретируется как javascript) script через его имя script, и сервер найдет его (каким-то образом) и вернет его как текст, который сразу же будет выполнен/интерпретирован. Я хочу знать, было бы лучше вернуть текст script в качестве текста, а затем создать тэг <script>
.
Кроме того, это НЕ дубликат разницы в JavaScript между eval() и добавлением тегов script, который касается функциональных различий, здесь я хочу, чтобы производительность и различия в безопасности.