Получить страницу с помощью 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, время: 16:37. |