Получить страницу с помощью WebWorker
Мой код выдаёт ошибку безопасности, поэтому хочу услышать от вас варианты как мне реализовать предзагрузку страниц в фоновом режиме на сайте.
Мой код: на странице сайта example.com <area shape='rect' coords='84,84,293,111' onclick='go()'>" главный поток
var pages = {};
var loader = new Worker("http://sub1.example.com/w_p.js");
loader.onmessage = function (e) {
pages = e.data;
}
function go()
{
doc.getElementById(contentContainer).innerHTML = pages[0];
}
воркер
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://sub2.example.com/", false);
xhr.send();
var pages = {};
pages[0] = xhr.responseText;
postMessage(pages);
Выдаёт ошибку: SecurityError: The operation is insecure. var loader = new Worker("http://sub1.example.com/w_p.js"); |
Использовать асинхронный запрос:blink: ??
xmlhttp.open('GET', 'http://sub2.example.com/', *!*true*/!*);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
}
};
xmlhttp.send(null);
|
Всё равно пишет SecurityError: The operation is insecure.
|
А какой смысл делать это в воркере?
|
Чтобы не дергать основной поток загрузкой других страниц. Когда помещаю скрипт воркера на сайт, с которого его запрашиваю, то всё работает. Но мне желательно, чтобы воркер, как и основной скрипт, располагался на cdn.
|
_Alex9_,
Цитата:
|
Благодарю. А с воркером так точно нельзя? Mozilla ни одной лазейки не оставила?
|
Зачем? Это всегда асинхронным запросом делается.
|
Рабочий должен спать, тогда в нем есть смысл (иначе без него заснет браузер), а тут нет смысла.
|
Цитата:
Цитата:
|
Octane, тут важно другое:
https://developer.mozilla.org/en-US/...ng_web_workers Цитата:
|
Судя по примеру, предзагрузка нужна для субдоменов, Access-Control-Allow-Origin скорее всего можно поставить.
|
Octane, не, он хочет на cdn хранить скрипты, так что ничего не выйдет.)
Хотя вот есть извращения с iframe: http://stackoverflow.com/questions/2...fferent-origin .=) |
Сделал загрузку с помощью XmlHttpRequest, добавил заголовок Access-Control-Allow-Origin *, но всё равно не дает загрузить и предлагает включить CORS.
|
Цитата:
|
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
HttpContext.Response.AppendHeader("Access-Control-Allow-Credentials", "true"); HttpContext.Response.AppendHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS"); HttpContext.Response.AppendHeader("Access-Control-Allow-Headers", "origin, content-type, accept, x-requested-with, sid, mycustom, smuser,x-powered-by,cache-control,content-encoding,content-length,date,expires,pragma,server,vary,x-aspnet-version,x-aspnetmvc-version,accept-encoding,accept-language,dnt,host,origin,referer,user-agent"); |
| Часовой пояс GMT +3, время: 00:56. |