如何解决Javascript和Cookie问题
| 我想使用Javascript每次按下按钮时创建一个ID为\“ username \”的输入字段的值的cookie。然后,我想阅读该cookie并将其显示在网站上。尽管我只是尝试以此来测试对Cookie的了解,但是现在我想知道解决该问题的方法,因为我的代码无法正常工作。 我将使用elated.com的这两个功能:function set_cookie ( name,value,exp_y,exp_m,exp_d,path,domain,secure )
{
var cookie_string = name + \"=\" + escape ( value );
if ( exp_y )
{
var expires = new Date ( exp_y,exp_d );
cookie_string += \"; expires=\" + expires.toGMTString();
}
if ( path )
cookie_string += \"; path=\" + escape ( path );
if ( domain )
cookie_string += \"; domain=\" + escape ( domain );
if ( secure )
cookie_string += \"; secure\";
document.cookie = cookie_string;
function get_cookie ( cookie_name )
{
var results = document.cookie.match ( \'(^|;) ?\' + cookie_name + \'=([^;]*)(;|$)\' );
if ( results )
return ( unescape ( results[2] ) );
else
return null;
}
当按下按钮时,该功能将运行:
function Register()
{
var username = document.getElementById(\"username\").value; //Read the input value
set_cookie(\"username\",username,2012,12,23); //Set the cookie
document.write(get_cookie(\"username\")); //Read the cookie
}
每当我尝试运行此命令时,get_cookie函数都将返回null。这意味着它至少已经成功运行,但是即使我刚刚创建了它,也没有找到任何名为“用户名”的cookie。有人可以帮忙吗?
解决方法
您说您正在使用Chrome。由于出于安全方面的考虑,Chrome(和Chromium)不允许在本地页面上设置或访问Cookie(请参阅http://code.google.com/p/chromium/issues/detail?id=535#c3 )。您发布的代码可以放到服务器上并发送出去,但是可以正常工作,但是如果您从本地系统中以file:// URL打开页面,则代码将无法正常运行。这就是jsfiddle起作用的原因。
其他一些浏览器的确允许在本地页面中使用cookie,因此,如果您希望在本地试用JavaScript和cookie,则最好尝试其中的一种。 Firefox使他们具有预期的行为,尽管他们已经考虑过对其进行更改,并且将来可能会这样做。 Chrome浏览器还具有一个命令行标志--enable-file-cookies,您可以在测试时使用它,但建议不要将其日常使用。
您也可以将页面放在服务器上并在其中进行测试。您可以在本地计算机上使用免费的托管服务之一或Apache实例或类似实例。重要的是页面是通过HTTP访问的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。