window.location.hash的应用及浏览器的支持测试

作者:heiniu 来源:阿里妈妈UED 时间:2009-07-07 11:52:00 

location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url。而location.hash则可以用来获取或设置页面的标签值。比如http://zidian.aspxhome.com#admin的location.hash=”#admin”,利用这个属性值可以实现很多效果。

case one:锚点触发iframe的url更换

html代码:

<dl id=”tbk_help_list”>
<dt>==成为淘宝客==</dt>
<dd><a href=”#faq_1_1″>什么是淘宝客推广?什么是淘宝客?</a></dd>
<dd><a href=”#faq_1_2″ id=”aaaa”>如何注册成为淘宝客?</a></dd>
<dt>==获取推广代码==</dt>
<dd><a href=”#faq_1_5″>获取单件商品推广代码</a></dd>
<dd><a href=”#faq_1_6″>获取一类商品推广代码</a></dd>
<dd><a href=”#faq_1_7″>获取推广组推广代码</a></dd>
<dd><a href=”#faq_1_8″>获取店铺推广代码</a></dd>
</dl>
<iframe src=”faq_1_1.html” frameborder=”0″ allowtransparency=”yes” scrolling=”auto” width=”700px” id=”contentFrame” name=”contentFrame” height=”600px”></iframe>

javascript代码:


<script type=”text/javascript” src=”http://static.alimama.com/js/mootools.js”></script>
<script type=”text/javascript”>
//锚点触发iframe的url更换
var help_dd_a = $(”tbk_help_list”).getElements(”a”);
function geturl(hs){
var hash = hs ? hs : window.location.hash;
if(hash && hash.length >2){
hash = hash.substr(1);
}
var url = hash + “.html”;
window.frames['contentFrame'].location  = url;
}
help_dd_a.each(function(el){
el.addEvent(”click”,function(){
var str = this.href.substr(this.href.lastIndexOf(”#”));
geturl(str);
});
});
</script>

案例截图,图1-1:


case two:各种浏览器对window.location.hash的“前进”、“后退”功能是否支持
说明:通过hash调整地址栏的地址,使得浏览器里边的“前进”、“后退”按钮能正常使用(实质上欺骗了浏览器)。然后再根据hash值的不同来显示不同的面板(用户可以收藏对应的面板了),这就使得Ajax页面的浏览趋于传统化了,但是,是否所有浏览器都支持hash的“前进”、“后退”功能呢?

测试说明:点击图1-1中左栏目菜单,看地址栏的变化和iframe的url的变化来判断浏览器是否支持hash的“前进”、“后退”功能。

浏览器iframe的url是否改变地址栏hash值是否改变是否支持
Mozilla Firefox3.0改变改变支持
Google Chrome2.0改变改变支持
IE6改变不改变不支持
IE7改变不改变不支持
IE8改变改变支持

ps:文中“所有浏览器”指列入测试范围的浏览器

结果:除ie6及以下浏览器、ie7不支持外,其他浏览器都支持hash的“前进”、“后退”功能,同时看客们也发现所有浏览器iframe的url都改变了,那是因为所有浏览器都支持iframe的url缓存,这与hash的缓存不是一个概念,所以排除iframe的url的数据干扰。

标签:浏览器,定位,location,location.hash
0
投稿

猜你喜欢

  • 一个较复杂的字符串截取函数

    2009-11-02 10:45:00
  • 如何在页面中快捷地添加翻页按钮?

    2010-06-26 12:33:00
  • DSN和DSN-Less两种数据库连接方式哪一种更好?

    2009-10-28 18:26:00
  • 数字人组件反写[asp组件开发实例4]

    2009-06-09 13:20:00
  • 恢复被删除的数据 Log Explorer for SQL Server 4.2 (一)

    2010-07-01 19:24:00
  • 两行 JavaScript 代码

    2010-08-31 14:57:00
  • MySQL 5数据库连接超时问题

    2009-12-29 10:23:00
  • js友好的表单验证程序vform

    2007-08-16 13:32:00
  • asp如何在页面中实现对电子信箱的访问?

    2010-06-26 12:34:00
  • xmlhttp 乱码 比较完整的解决方法 (UTF8,GB2312)

    2008-05-02 21:02:00
  • SQL Server如何实现快速删除重复记录?

    2011-05-03 11:18:00
  • AJAX实现web页面中级联菜单的设计

    2007-09-26 13:37:00
  • ORACLE常见错误代码的分析与解决(三)

    2010-07-31 12:45:00
  • 动态导航设计

    2008-09-21 13:40:00
  • 如何根据用户银行帐户余额的多少进行显式的提交或终止?

    2009-11-22 19:28:00
  • Access秘密技巧和陷阱

    2008-04-12 14:55:00
  • 使用FCKeditor添加文章时,在文章最后多了逗号

    2007-10-11 13:38:00
  • ASP正则表达式验证域名是否合法

    2010-01-02 20:44:00
  • 如何以及何时使用sIFR

    2008-03-07 12:38:00
  • ASP面向对象编程探讨及比较

    2008-04-12 07:16:00
  • asp之家 网络编程 m.aspxhome.com