2016-11-29 3 views
0

У меня есть переменная (строка) в Javascript, в котором, например, иметь этот текст:Выполнить код внутри строки Javascript

"document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';" 

Я получил эту переменную с помощью Ajax и PHP, но не там, где мой (возможно, очень простой) вопрос.

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

Как я могу это сделать?

Заранее спасибо

ответ

3

Не делайте этого. It's a security nightmare.

Если вы действительно должны сделать это, используйте eval() как в:

eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"); 

Учитывая ваш пример и объяснение, я подозреваю, что вы извлекаете URL, содержимое которого состоит полностью из JavaScript. Проблема, с которой вы столкнулись, заключается в том, что метод, который вы используете для извлечения этого url, дает вам строку, содержащую этот javascript. Я считаю, что вместо этого вы должны использовать элемент <script> для загрузки этого кода. Для этого динамически:

var script = document.createElement("script"); 
script.src = "url/to/your/javascript"; 
document.getElementByTagName('body')[0].appendChild(script); 
1

Вы можете использовать метод eval(). Но не делайте этого, если вам это не нужно. И если вы сделать, убедитесь, что вы знаете, что делаете.

eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';") 
0

Вот альтернатива использованию eval():

var stringContainingJavascript = "document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';" 

var body = document.getElementsByTagName('body')[0]; 

var paragraph = document.createElement('p'); 
paragraph.id = 'tekst'; 
body.appendChild(paragraph); 

var script = document.createElement('script'); 
var scriptText = document.createTextNode(stringContainingJavascript); 
script.appendChild(scriptText); 
body.appendChild(script); 

Скрипт выше создает <p> элемент и придает ему id="tekst", перед добавлением в <p> к <body> документа.

Тот же скрипт затем создает элемент <script> и добавляет к нему строку перед добавлением <script> к <body> документа.

Смежные вопросы