我想在浏览器对页面上较低的各种资源发出请求之前设置一些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