Установить куки перед последующими запросами в IE - PullRequest
1 голос
/ 23 сентября 2011

Я пытаюсь установить некоторые куки (через javascript), прежде чем браузер сделает запрос на различные ресурсы ниже на странице. Следующее работает в Chrome / Firefox, но не в IE:

[some_page.html]

<!doctype html>
<head>
<script>
    var hash=new Date();
    document.cookie='hash=' + hash + ';';
    console.log("From page: " + hash);
</script>
<script src="/test_cookie.php"></script>
</head>
<body></body>
</html>

[test_cookie.php]

console.log('From script: <?=$_COOKIE['hash']?>');

При просмотре файла some_page.html в консоли отображается следующее (в Chrome / Firefox):

"From page: 1316757967982"
"From script: 1316757967982"

Есть ли какие-нибудь хитрости, чтобы заставить это работать в IE? Например, установить defer для тега сценария test_cookie.php или что-то еще в этом духе ...?

Спасибо!

1 Ответ

2 голосов
/ 23 сентября 2011

Вы можете динамически сгенерировать второй тег сценария и вставить его на страницу, чтобы он не запустился до того, как вы установили cookie. Затем, если вы собираетесь динамически генерировать тег сценария, возможно, было бы даже лучше добавить «? Hash = 1316757967982» в конец URL-адреса src test_cookie.php, чтобы вы могли быть уверены, что ваш сервер получит значение хеш-функции (из URL, а не из cookie). Кроме того, вам не нужно полагаться на время использования файлов cookie и сценариев.

Вот как вы динамически добавляете тег скрипта:

function addScriptTag(url) {
  var s = document.createElement(’script’);
  s.type=’text/javascript’;
  s.src= url;
  document.getElementsByTagName(’head’)[0].appendChild(s);
} 

addScriptTag("/test_cookie.php?hash=" + new Date());

Нет договора с браузером о том, что он не начнет загружать несколько сценариев одновременно, есть только договор о том, что он будет выполнять статически определенные сценарии в последовательном порядке, поэтому я не думаю, что ваш текущий подход когда-либо гарантирован работать. Параллельная загрузка нескольких сценариев может легко стать нужным вариантом ускорения работы браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...