Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DiscuzX的js版本的setcookie有bug

[复制链接]
ihipop 发表于 2012-7-10 10:14:54 | 显示全部楼层 |阅读模式
本帖最后由 ihipop 于 2012-7-12 17:05 编辑

近日在写一些东西的时候用到了dz的内置js函数setcookie,最后在做浏览器兼容的时候,发现IE9兼容模式下,无法使用此函数设置Session Cookie。
下的断点如下(Ie9兼容模式)

在IE9兼容模式下,当setcookie不指定一个有效时间的时候,expires对象最后变成了NaN,而且后面判断(expires ?)结果为TURE,(很奇怪IE为啥会做出这样的判断)导致在指定的cookies下expires 属性也变成了NaN,这个在IE9兼容模式下,这个cookies就会被删除,而不是变成Session Cookies
下图是IE9的标准模式

在IE9标准模式下,也有类似问题,但是IE9不会删除这个cookies,而是变成Session Cookies。
所以IE9标准模式下,可以通过setcookie('test',123) 设置一个name叫test,值为123的的session cookie,而在IE9兼容模式下,这个cookies就会被删除。
这个问题只在IE9兼容模式下重现(我在公司使用的是IE9 X64 / WIN7 X64),我使用firefox chrome都没有这个问题。使用jQuery的cookies插件也没有任何问题,希望官方能花点时间看看,不枉我打字如许。

演示视频 http://v.youku.com/v_show/id_XNDI2NTUzOTI0.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
m.king 发表于 2012-7-11 10:30:32 | 显示全部楼层
好!感谢您的反馈该问题我们再核查下。
回复

使用道具 举报

mark35 发表于 2012-7-11 11:24:07 | 显示全部楼层
楼主把 toGMTstring()方法用 toUTCString()替代试试

另外,escapce()建议用更标准的encodeURI()或encodeURICompenet()来替代
回复

使用道具 举报

 楼主| ihipop 发表于 2012-7-12 10:57:19 | 显示全部楼层

...

本帖最后由 ihipop 于 2012-7-12 14:55 编辑
mark35 发表于 2012-7-11 11:24
楼主把 toGMTstring()方法用 toUTCString()替代试试

另外,escapce()建议用更标准的encodeURI()或encode ...

我自己写js肯定能解决的 我现在就是在反馈dz的内置的js函数setcookie在IE9兼容模式下无法设置一个session cookie的问题
回复

使用道具 举报

m.king 发表于 2012-7-12 13:39:14 | 显示全部楼层
ihipop 发表于 2012-7-12 10:57
我自己写js肯定能解决的 我现在就是在反馈dz的内置的js函数setcookie在IE9兼容模式下无法设置一个session ...

经过我们核查,实测 session cookie 已经设置上了。你这图中的common.js和当前版本的不一样。你可以升级一下试试。
回复

使用道具 举报

 楼主| ihipop 发表于 2012-7-12 13:59:19 | 显示全部楼层
m.king 发表于 2012-7-12 13:39
经过我们核查,实测 session cookie 已经设置上了。你这图中的common.js和当前版本的不一样。你可以升级一 ...

是IE9兼容模式下的么?
我在官网下断点也设置不了啊
回复

使用道具 举报

 楼主| ihipop 发表于 2012-7-12 14:03:25 | 显示全部楼层
m.king 发表于 2012-7-12 13:39
经过我们核查,实测 session cookie 已经设置上了。你这图中的common.js和当前版本的不一样。你可以升级一 ...

做个很简单的测试
你在IE9上打开discuz.net官网 然后在IE9地址栏里面输入
  1. javascript:alert(setcookie('test',123))
复制代码
  1. javascript:alert(getcookie('test'))
复制代码
如果是在IE9标准模式,第二个就会弹出一个123的对话框
IE9兼容模式 就是弹出一个空对话框
回复

使用道具 举报

 楼主| ihipop 发表于 2012-7-12 14:08:12 | 显示全部楼层
m.king 发表于 2012-7-12 13:39
经过我们核查,实测 session cookie 已经设置上了。你这图中的common.js和当前版本的不一样。你可以升级一 ...


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| ihipop 发表于 2012-7-12 14:14:20 | 显示全部楼层
m.king 发表于 2012-7-12 13:39
经过我们核查,实测 session cookie 已经设置上了。你这图中的common.js和当前版本的不一样。你可以升级一 ...


IE9标准模式下 先setcookie('test',123)再getcookie 就能正常 使用
  1. javascript:alert(document.cookie)
复制代码
也能看到设置的cookie项目






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| ihipop 发表于 2012-7-12 14:15:01 | 显示全部楼层
你们进行模式切换测试的时候清空了之前的cookies么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-2-26 05:35 , Processed in 0.035085 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表