Posted in Javascript onJanuary 31, 2009
Cookie的处理
之前就遇到过IE8处理Cookie的问题,就是在某网站上用IE8登陆,一登上去,切换个页面又需要登陆才能发表。问题就是登陆的cookie信息,IE8不接受。在网上看了很多朋友体提到这样的问题,都是说在登陆论坛的时候,要重复登陆,IE8无法读取cookie。呵呵,最后自己仔细查了下IE8相关文档,呵呵,其中说IE8的安全设置提高了,只读取有明确域名标识的cookie。
呵呵,原来就是自己的坏习惯,使用cookie从来都不明确设置域名:
cookie.set('skin', 'blue', 365, '') // 问题就在这里最后的''
这里本应该设置要发送cookie信息的域名的(cookie的详细信息【[url=]cookie in javascript[/url]】),但是以前IE不做域名设置时,就根据访问的页面站点的域名为默认的域名。但是现在IE8就不行了,老实点把域名加上吧。对了,最后把通用的cookie使用类贴出来:
var Cookie = { isAllowed: document.cookie && document.cookie != '', set: function(cn, cv, d, dm){ var now = new Date(); var expire = new Date(); if (d == null || d == 0) { d = 1; } expire.setTime(now.getTime() + 3600000 * 24 * d); document.cookie = cn + '=' + encodeURI(cv) + ';expires=' + expire.toGMTString() + ';domain=' + dm + '; path=/'; }, clear: function(cn, dm){ if (this.get(name)) { document.cookie = cn + '=' + ((domain) ? '; domain=' + dm : '') + '; expires=Thu, 01-Jan-70 00:00:01 GMT'; } }, get: function(cn){ var dc = document.cookie; var prefix = cn + '='; var begin = dc.indexOf('; ' + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) { return null; } } else { begin += 2; } var end = document.cookie.indexOf(';', begin); if (end == -1) { end = dc.length; } return decodeURI(dc.substring(begin + prefix.length, end)); } };
Opacity/filter 透明滤镜的使用
知道lightbox效果的朋友都知道,就是因为有了一个半透明的遮罩层,给这个效果增添了不少的NB的感觉。但是在IE8中,现在对透明滤镜的支持不是那么好了,我甚至在google上看到有国外的朋友说,IE8准备拒绝对元素设置透明,除了对图片的透明的支持。呵呵,我想你在开类似程序的时候,在IE8中那酷酷的透明效果,却成了你心头的痛。不过不用担心,我目前在beta2中,还是可以使用这个效果,你只要这么做:
function Opacity(element, value){ var style = element.style; style.opacity = value / 100; style.filter = "alpha(opacity=" + value + ")"; }
就3行代码,呵呵,不用像很多JS库中那样做什么浏览器嗅探,我测试过,IE6~8(包裹IE8标准视图),opera 9+, NetScape8.1, FF2.x~3.x, goolge浏览器中都支持得很好。就是要注意顺序,一定要先使用opacity,然后使用filter就保证一定能够正常显示。很好,很简单!呵呵,今天就先说这么点吧!
IE8 浏览器Cookie的处理
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@