我的代码在firefox中工作,当我访问w3schools使用chrome在他们的编辑器中测试我的代码时,它工作得很好但是当我从记事本++中使用chrome启动我的代码时它不起作用。似乎身体上的负载是没有工作,因为我没有得到警报。我的铬是最新的。帮助将不胜感激。
<!DOCTYPE html>
<html>
<head>
<script>
function setCookie(cname,cvalue,exdays){
var d=new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires="expires="+d.toUTCString();
document.cookie=cname +"="+cvalue+"; "+expires;
}
function f(){
var user=prompt("What is your name?","");
if(user!="" && user!=null){
setCookie("username",user,30);}
}
function getC(cname){
var name=cname+"=";
var ca=document.cookie.split(";");
for(var i=0;i<ca.length;i++){
var c=ca[i];
while(c.charAt(0)==" ")c=c.substring(1);
if(c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}
function checkcooki(){
var user=getC("username");
if(user!=""){
alert("Welcome back "+user);
}
}
</script>
</head>
<body onLoad="checkcooki()">
<input type="button" onclick="f()" value="klick">
</body>
</html>
答案 0 :(得分:1)
事实上:使用file://
协议无法保证正确使用Cookie。因为cookies需要3件事:
域告诉浏览器应该将cookie发送到哪个域。如果您未指定它,它将成为设置cookie的页面的域。
在file://
协议上,您没有域名。
现在有些浏览器可能已经找到了解决方案,比如FireFox和IE。您可以在这些浏览器上测试您的代码,但不会像在网络服务器上那样使用Cookie。
在您的情况下,正确的x浏览器测试需要http://
协议。
我建议你启动一个jsfiddle或设置一个web服务器(IIS,apache)。
正确阅读cookies:quircksmode
如果您仍然坚持通过file://
协议使其处理chrome,那么如果您正确获得路径,则可能会有很小的机会。
encodeURIComponent(document.domain)
或"c:\/my%20folder\/index.html"
(沿着这些方向,但又是非常不值得信赖的信息)"/"
(不知道你还可以尝试其他什么)答案 1 :(得分:0)
您的用户变量必须是空字符串。
在checkcooki()函数的最顶部发出警报,以验证正文载入是否有效。