They said to make ajax
, which will load the js
script in the tag, not the .js
file itself, but the script inserted in the page, and so that the Java script would then work. How can I do that? And the library can not be used.
|
2 answers
If I understood correctly, then it is necessary to execute pure js code on the client. Then the task consists of two subtasks:
- Download script from server
- Execute script
Download script.
We use xmlhttprequest
// Кросбраузерный вариант создания запроса function getXmlHttp(){ var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } // теперь сам запрос var xmlhttp = getXmlHttp() xmlhttp.open('GET', '/xhr/test.js', true); // где /xhr/test.js - адрес скрипта xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200) { eval( '(' + xmlhttp.responseText + ')'); } } }; xmlhttp.send(null);
Script execution
Pay attention to the line
eval( '(' + xmlhttp.responseText + ')');
eval - executing script method, more details here.
- 2eval is evil, it's better to simply attach the script to the body and it will execute - markuper
- I agree. But it was too lazy to write her insert without jquer - Dmitry Manannikov
|
Variant without eval, we just create a tag when loading, which will be executed
var scriptEl = document.createElement('script'); scriptEl.src = url // url = то ссылка на скрипт document.body.appendChild(scriptEl);
It is better to place body
at the beginning (not in the head
, since then the body
will not) If you place it in the head
, then instead of document.body
, you will need to write document.head
- And nothing that the issue is 3 years old, Mr. archeologist? - user31688
|