мне еще раз. хорошо, это работает! должны сделать это: исходный файл помещает весь html в переменную javascript, var mytext = "<html> <body> и т. д. и т. д.". Вы должны убедиться, что внутри html «нет», и все это должно быть в одной строке. Но если вы сделаете это, то все, что вам нужно сделать, это сказать document.getElementById ('mydiv'). InnerHTML = mytext и все это работает. В Chrome, Mozilla. Не знаю насчет IE. Но все должно работать нормально.
ал другие те же темы политики происхождения здесь на SO, но я не видел никаких решений, связанных с локальной файловой системой.
У меня есть веб-приложение (в широком смысле этого слова), которое должно быть локально обслуживаемым. Я пытаюсь загрузить большой объем данных после того, как пользователь загрузил страницу, в зависимости от того, что они делают на веб-странице. В Firefox 3.5 и IE8 я могу использовать для этого методы AJAX () и GetScript () jQuery, но в 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 Origin null не разрешен Access-Control-Allow-Origin для файла: /// для файла: /// (без сервера)
Межсайтовый XMLHttpRequest
Опять же, мое последнее средство заключается в загрузке всех данных при загрузке веб-страницы. Это может привести к задержке загрузки веб-страницы до 10 секунд, которая не нужна для 90% пользователей приложения.
Спасибо за любые предложения / альтернативы !!!