最近在修改重寫自己的簡歷程序,其中要使用皮膚切換和lightbox效果,在開發的工作中ie8,給我帶來點麻煩。
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就保證一定能夠正常顯示。很好,很簡單!呵呵,今天就先說這么點吧!