您的位置:首页 > Web前端 > JQuery

增加RSH(Really Simple History)框架对IE8的支持

2010-08-31 10:59 357 查看
RSH提供了存储客户与Web应用交互过程产生的多个历史记录事件的能力。每个事件与一个保存在文档的URL相联系。当用户点击浏览器的后退和前进按钮时,RSH使用该Hash对象的值获取与其相关的事件并调用任何注册到该事件的事件处理器。(51CTO)

 

RSH6.0没有提供对IE8的支持,经测试,RSH对IE8的支持很差。我们知道,RSH增加对浏览器前进后退的支持是通过改变浏览器地址栏的HASH来实现的,在Firefox下直接更改地址HASH可添加一条历史记录,而在IE6、7下是通过添加一个IFRAME来实现的,在IE8中可直接更改一个HASH来添加一条历史记录,因此对IE8的处理和FIREFOX的处理是一致的。

 

更改line48-67判断浏览器类型的代码为(其中$.browser来自JQuery)即可:

/*set user-agent flags*/
var UA = navigator.userAgent.toLowerCase();
var platform = navigator.platform.toLowerCase();
var vendor = navigator.vendor || "";
if (vendor === "KDE") {
this.isKonqueror = true;
this.isSupported = false;
} else if (typeof window.opera !== "undefined") {
this.isOpera = true;
this.isSupported = true;
} else if (typeof document.all !== "undefined" && $.browser.version !== '8.0') {
this.isIE = true;
this.isSupported = true;
} else if (vendor.indexOf("Apple Computer, Inc.") > -1) {
this.isSafari = true;
this.isSupported = (platform.indexOf("mac") > -1);
} else if (UA.indexOf("gecko") != -1 || ($.browser.msie && $.browser.version === '8.0')) {
this.isGecko = true;
this.isSupported = true;
}


 

 

另外,在Firefox和IE8下,如果缓存的数据过大,本人测试,大于20K,存储缓存的速度明显变慢,在刚才代码下加如下代码可解决该问题,原因请高手回答:

//非IE6/7环境下样式使用display:none可加快缓存存储速度
if(this.isGecko)
{
window.historyStorage.hideStyles = 'display:none';
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息