Что не так с правильным созданием тега <script>
?document.write
это зло, конец дискуссии.
Попробуйте с этим:
var load_script = function(options) {
options.owner_document = options.owner_document || document;
var script_tag = options.owner_document.createElement('script');
script_tag.setAttribute('type', 'text/javascript');
script_tag.setAttribute('src', options.src);
script_tag.onload = function() {
script_tag.onreadystatechange = null;
options.callback && options.callback();
};
script_tag.onreadystatechange = function() {
if (script_tag.readyState == 'loaded' || script_tag.readyState == 'complete') {
script_tag.onload = null;
options.callback && options.callback();
}
};
options.owner_document.getElementsByTagName('head')[0].appendChild(script_tag);
};
, как видите, в этом фрагменте есть простой API:
src - источник скрипта
owner_document - документ, в который будет вставлен скрипт, по умолчанию используется текущий документ, в котором скрипт запускается из
callback - функция, запускаемая после загрузки скрипта, все, что требуетСкрипт src
можно безопасно запускать внутри этого замыкания.
пример использования:
// sample loading of jQuery
load_script({
src: '/js/jquery-1.4.2.min.js',
callback: function() {
// jQuery is available at this point, run your code.
}
});
альтернативно, вы можете использовать такие загрузчики, как Requiere.js и LABjs