Я читал те же самые темы политики происхождения здесь, на SO, но я не видел никаких решений, связанных с локальной файловой системой.
У меня есть веб-приложение (в свободном смысле слова), которое должно быть местным. Я пытаюсь загрузить большой объем данных после того, как пользователь загрузил страницу, в зависимости от того, что они делают на веб-странице. В Firefox 3.5 и IE8 я могу использовать jQuery AJAX() и GetScript() для этого, но в Chrome это не удается из-за той же политики происхождения.
XMLHttpRequest
не может загрузитьfile://test/testdir/test.js
. Происхождениеnull
не разрешеноby Access-Control-Allow-Origin
.
Это происходит, когда я делаю что-то простое, например
$.getScript("test.js");
Это отлично работает в IE и Firefox.
Прочитав кучу об этом, я решил попробовать написать прямо в голову документа. На консоли в Chrome я набрал следующее:
var head = document.getElementsByTagName("head")[0];
var script =document.createElement('script');
script.id = 'uploadScript';
script.type = 'text/javascript';
script.src = "upload.js";
head.appendChild(script);
Это отлично работает при вставке в консоль - элемент <script...test.js</script>
добавляется в голову, оценивается и содержимое, загруженное в DOM.
Я думал, что это было успешным, пока я не включил этот код в вызов функции. Тот же самый точный код при вызове функции добавляет элемент в элемент, но не оценивает файл JavaScript. Я не могу понять, почему. Если я использую консоль Chrome, чтобы остановить выполнение в методе, в котором он добавляет элемент и запускает указанный выше код, он не оценивает его. Однако, если я откажусь от выполнения и запускаю тот же самый код (вставляя его в окно консоли), он работает. Я затрудняюсь это объяснить. Кто-нибудь имел дело с этим раньше?
Я прочитал следующие сообщения SO, но они не описывают проблему, которая у меня есть:
Способы обхода политики одного и того же происхождения
XMLHttpRequest Происхождение null не разрешено Access-Control-Allow-Origin для файла:///для файла:///(без сервера)
Межсайтовый XMLHttpRequest
Опять же, последнее мое решение - загрузить все данные на загрузку веб-страницы. Это может привести к задержке на 10 секунд при загрузке веб-страницы, которая не нужна для 90% пользователей приложения.
Спасибо за любые предложения/альтернативы!!!