IE8 浏览器Cookie的处理

  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就保证一定能够正常显示。很好,很简单!呵呵,今天就先说这么点吧!