2014-09-16 4 views
0

Нечетная проблема в Firefox (без проблем в Chrome, IE (по крайней мере, 11) и Safari). Следующий код разрывался страница и опорожнение сети профайлера, исходный код страницы, и т.д. ...Загрузка динамического сценария и ошибки в Firefox

<script> 
    var mainScriptSrc = '/scripts/app/site.js'; 
    var jQuerySrc = '/scripts/vendor/jquery/jquery.js'; 
</script> 
<script> 
    function loadMain(){document.write('<script src="'+mainScriptSrc+'"><\/script>');} 
    window.jQuery || document.write('<script src="'+jQuerySrc+'" onload="loadMain()"><\/script>') 
</script> 

Все выделяются как нечетные?

Спасибо,
Dan

ответ

0

Когда я запускаю этот код через Devtools в Firefox, я получаю SecurityError: The operation is insecure..

Вы могли бы попытаться сделать это вместо того, чтобы:

function addScript(path, onload) { 
    var script = document.createElement("script"); 
    script.src = path; 
    if (onload) { 
    script.onload = onload; 
    } 
    document.body.appendChild(script); 
} 
function loadMain(){ 
    addScript("/scripts/app/site.js"); 
} 
window.jQuery || addScript("/scripts/vendor/jquery/jquery.js", loadMain); 

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

+0

А, хорошо поймать «только загрузку сайта.js, если jQuery не находится в« окне ». Это не было моим намерением. Меня все еще интересует, почему это проблема безопасности, и почему Firefox сбрасывает содержимое страницы (я полагаю, они могут быть связаны). – danwoods

+0

Я не могу объяснить сброс содержимого, которое вы описываете (по крайней мере без если это произойдет), но document.write() работает только во время состояния синтаксического анализа, а не после завершения загрузки документа. Подкрепляет [Генри Сивонен] (https://twitter.com/hsivonen/status/512205402927534080) для указания этого. –

+0

На самом деле, [это] (http://stackoverflow.com/a/23787551/1848865) объясняет, почему вы видите весь документ, сбрасываемый. –

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