Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.12.2010, 22:30
Интересующийся
Отправить личное сообщение для Cepin Посмотреть профиль Найти все сообщения от Cepin
 
Регистрация: 07.03.2009
Сообщений: 21

Подгрузка скрипта перед редиректом ссылки
Здравствуйте, возникла следующая проблема.

На странице имеется самая обыкновенная ссылка.

Задача состоит в том, чтобы перед редиректом ссылки, подгрузить скрипт, а затем выполнить редирект.


Сама функция подгрузки
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 - в фф выдается).

Что посоветуете? Это пользовательский скрипт и задача поставлена ребром так, что именно перед редиректом ссылки нужно подгрузить еще один скрипт.
Ответить с цитированием
  #2 (permalink)  
Старый 09.12.2010, 23:36
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Как насчет останавливать ссылку (return false), а после всяких там операций переходить по ней меняя window.location?
Ответить с цитированием
  #3 (permalink)  
Старый 09.12.2010, 23:59
Интересующийся
Отправить личное сообщение для Cepin Посмотреть профиль Найти все сообщения от Cepin
 
Регистрация: 07.03.2009
Сообщений: 21

Скрипт является своего рода статистикой и предназначен для сохранения переменной перед кликом по ссылке. Т.е. я подгружаю "скрипт" такого вида

http://example.com/cache.php?var=123

Соотвественно, по этой ссылке происходит сохранение результатов(а затем обратно выдача их клиенту).

Можно попробывать возвращать редирект, но это на крайний случай так как:
- теряется гибкость, ссылки могут быть разные.
- Клиенту придется заморозить браузер, пока не подгрузится скрипт.


В идеале нужно, чтобы браузер послал асинхронный запрос и дальше следовал редиректу. Но видимо браузеру видят такой поворот событий и обрубают соединение.
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2010, 10:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вам не нужен ответ от сервера, т.е. загружать скрипт не надо, надо только, чтобы успел отправиться запрос. А успел ли он надо проверять на сервере, firebug тут не помощник.

И запрос проще отправить так
new Image().src = 'http://example.com/cache.php?var=123';
Ответить с цитированием
  #5 (permalink)  
Старый 10.12.2010, 21:06
Интересующийся
Отправить личное сообщение для Cepin Посмотреть профиль Найти все сообщения от Cepin
 
Регистрация: 07.03.2009
Сообщений: 21

Такой запрос показал себя хорошо в опере и в мозиле. Хром прервал соединение, даже не отослав запрос.

Последний раз редактировалось Cepin, 10.12.2010 в 21:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическая подгрузка скрипта jetli13 Общие вопросы Javascript 1 13.07.2010 16:15
Динамическая подгрузка скрипта format1981 Общие вопросы Javascript 7 23.10.2009 12:40
Нужно добавить блокировку ссылки на время выполнения скрипта aidka Events/DOM/Window 1 02.08.2009 20:11
Подгрузка скрипта партнерки Atonik Я не знаю javascript 1 26.05.2009 18:15
Подгрузка ява скрипта . можно ли AntonPetrovich Общие вопросы Javascript 9 13.10.2008 12:33