我想在瀏覽器對頁面上較低的各種資源發出請求之前設置一些cookie(通過javascript)。在鍍鉻/火狐,但是,不是IE以下工作:在IE中的後續請求之前設置cookie
[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中工作?像在test_cookie.php
腳本標記上設置defer
一樣,或者沿着這些行設置其他內容......?
謝謝!
是的,您可能沒有指定合約是正確的,但是,在繼續解析DOM的其餘部分之前,所有當前瀏覽器(FF/IE/WK)都將解析/執行內聯腳本。參見:http://bit.ly/q4Ku19 http://bit.ly/pkcCK3。 此外,動態添加腳本不會保留執行順序,對吧?對不起,我應該指定,作爲一個需求... –
通過契約,頁面中的所有代碼必須按順序執行,並且頁面之前的DOM元素在執行時必須存在。但是,代碼不必以任何特定的順序從服務器獲取,而這正是您想要依賴的順序。所以,我不認爲你可以依靠這一點。您正確地認爲動態插入的腳本標籤現在是異步加載的,因此不會加載/執行訂單。 – jfriend00
如果你想要更多的選擇來解決你的問題,你可能需要解釋你真正想在這裏做什麼。爲什麼在加載腳本之前需要獲取散列值到cookie中?可能有不同的方法來解決這個問題。 – jfriend00