Подгрузка скрипта перед редиректом ссылки
Здравствуйте, возникла следующая проблема.
На странице имеется самая обыкновенная ссылка. Задача состоит в том, чтобы перед редиректом ссылки, подгрузить скрипт, а затем выполнить редирект. Сама функция подгрузки function fetch(url) { var script = document.createElement('script'); script.src = url; script.type = 'text/javascript'; root.document.getElementsByTagName('head')[0].appendChild(script); } Код вызова link.onclick = function() { fetch('http://example.com/script.js'); return true; } В опере такая конструкция работает без проблем. ФФ и хром сбрасывают соединение c подгружаемым скриптом, как только видят редирект. Пытался решить это внедрением setTimeout на 2 секунды, все равно скрипт не загружается (NS_BINDING_ABORTED - в фф выдается). Что посоветуете? Это пользовательский скрипт и задача поставлена ребром так, что именно перед редиректом ссылки нужно подгрузить еще один скрипт. |
Как насчет останавливать ссылку (return false), а после всяких там операций переходить по ней меняя window.location?
|
Скрипт является своего рода статистикой и предназначен для сохранения переменной перед кликом по ссылке. Т.е. я подгружаю "скрипт" такого вида
http://example.com/cache.php?var=123 Соотвественно, по этой ссылке происходит сохранение результатов(а затем обратно выдача их клиенту). Можно попробывать возвращать редирект, но это на крайний случай так как: - теряется гибкость, ссылки могут быть разные. - Клиенту придется заморозить браузер, пока не подгрузится скрипт. В идеале нужно, чтобы браузер послал асинхронный запрос и дальше следовал редиректу. Но видимо браузеру видят такой поворот событий и обрубают соединение. |
Вам не нужен ответ от сервера, т.е. загружать скрипт не надо, надо только, чтобы успел отправиться запрос. А успел ли он надо проверять на сервере, firebug тут не помощник.
И запрос проще отправить так new Image().src = 'http://example.com/cache.php?var=123'; |
Такой запрос показал себя хорошо в опере и в мозиле. Хром прервал соединение, даже не отослав запрос.
|
Часовой пояс GMT +3, время: 14:39. |