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的数据干扰。


猜你喜欢
- Json To Dictimport jsonjsonData = '{"a":1,"b":
- 目录前言 字符串都有哪些操作?第一类 判断识别字符串第二类 字符串编辑的操作第三类:字符串跟字节串的互转总结前言今天我们说了字符串
- 什么是内存管理机制python中创建的对象的时候,首先会去申请内存地址,然后对对象进行初始化,所有对象都会维护在一个叫做refchain的双
- 主键索引排序失效环境:MySQL8有一张用户信息表user_info,建表DDL如下:CREATE TABLE `user_info` (
- 一、json_encode()该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:$arr = array ('
- 本文实例讲述了Python3.5装饰器原理及应用。分享给大家供大家参考,具体如下:1、装饰器:(1)本质:装饰器的本质是函数,其基本语法都是
- Python中的[1:]意思是去掉列表中第一个元素(下标为0),去后面的元素进行操作,以一个示例题为例,用在遍历中统计个数:题:读入N名学生
- 比如,在使用DWR的时候,如果你想传递下拉框的参数到后台的话,此时就需要先获取到下拉框的值了。 其实想要获取到下拉框的值是很简单的。 最关键
- 简介壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物。然而,终究有一天你已经
- QPS原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。公式:( 总PV数 * 80% ) / ( 每天秒数 * 20%
- 问题在Django中使用mysql偶尔会出现数据库连接丢失的情况,错误通常有如下两种OperationalError: (2006,
- 1)doctest 使用doctest是一种类似于命令行尝试的方式,用法很简单,如下 def f(n): ""
- 请问鼠标移过去就出现二级菜单代码怎么写啊 <head><style type="tex
- easy_thumbnails:A powerful, yet easy to implement thumbnailing applica
- NTP(Network Time Protocol)是由美国德拉瓦大学的David L. Mills教授于1985年提出,设计用来在Inte
- 解析器解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程.本质就是对请求体中的数据进行解析.Content-
- 阅读上一篇:FrontPage XP设计教程5——表单的设计 在制作出图文并茂的网页之后,很多读者朋友还想让自己的网页能够播放音乐、视频等多
- 爬取网站为:http://xiaohua.zol.com.cn/youmo/查看网页机构,爬取笑话内容时存在如下问题:1、每页需要进入“查看
- phpStorm2020 注册码下载地址:https://www.jetbrains.com/phpstorm/注册码如下:M05PN4I3
- 事务在数据库中有时候需要把多个步骤的指令当作一个整体来运行,这个整体要么全部成功,要么全部失败,这就需要用到事务。1、 事务的特点事务有若干