对URL hash的操作

一、什么是hash?如何获取hash?

hash 是 HTML DOM location 对象的一个属性,它是存储 URL 锚部分(从 # 号开始的部分)的一个字符串。hash的变化不会引起浏览器的重新刷新,具体获取hash的代码如下:

var hash = window.location.hash;

 需要注意的是firefox会对location.hash获取的字符串进行解码,如果有相关操作请使用以下代码:

var url = window.location.href;
var index = url.indexOf(‘#‘);
var hash = index == -1 ? ‘‘ : url.slice(index);
return hash;

二、监听hash执行相应逻辑

javascript提供了事件hashchange来进行对hash的监听,该事件对象下有两个属性:oldURL与newURL。应该注意的是该事件只兼容IE8+的IE浏览器,所以下面我们使用脚本模拟该事件,在window.onhashchange上绑定事件处理函数。

(function(window) {      // 自执行匿名函数

  // 如果浏览器原生支持该事件,则退出
if ( "onhashchange" in window.document.body ) { return; }

  var location = window.location,
    oldURL = location.href,
    oldHash = location.hash;

  // 每隔100ms检测一下location.hash是否发生变化
  setInterval(function() {
    var newURL = location.href,
      newHash = location.hash;

    // 如果hash发生了变化,且绑定了处理函数...
    if ( newHash != oldHash && typeof window.onhashchange === "function" ) {
      // execute the handler
      window.onhashchange({
        type: "hashchange",
        oldURL: oldURL,
        newURL: newURL
      });

      oldURL = newURL;
      oldHash = newHash;
    }
  }, 100);

})(window);
时间: 2024-10-27 06:03:22

对URL hash的操作的相关文章

算法学习 - Hash Table操作,分离链接法解决哈希冲突

分离链接法 hash table是映射机制的,最大的优点就是它的操作是O(1)级别的.但是会出现哈希冲突,这就需要几种办法来解决.这里先说一种:分离链接法. 就是当插入的位置已经存在一个值之后,那么在这个值之后插入,就可以了,也叫拉链法.(但是其实会降低查找速度,变成O(n)级别) 下面是代码: // // main.cpp // HashTable_SeparateChaining // // Created by Alps on 14-8-5. // Copyright (c) 2014年

php url字符转义操作

遇到一段代码,从数据库里读出来带 \ 字符 需要转义成中文~ 用到url_decode(); 1 //$info 为刚从数据库中读取的二维数组 2 3 foreach($info as $key1 => &$value1) { 4 foreach($key1 as $key2 => &$value2) { 5 if($key2 == 'url转义字段' ) //判断是否是要转义的字段 6 { 7 $value = url_decode(str_replace('\\','%',

Redis - hash类型操作

hash 类型操作设置操作:hset:    hset key filed value        创建指定key的filed-value名值对hsetnx:    hsetnx key filed value        创建不存在的key的filed-value名值对,已存在则创建失败hmset:    hmset key filed1 value1 filed2 value2    创建key对应的多个filed-valuehdel:    hdel key filed        

Hash常用操作

十五.Hash常用操作127.0.0.1:6379> hset hash1 name szk(integer) 1127.0.0.1:6379> hset hash1  age 23(integer) 1127.0.0.1:6379> hset hash1  job it(integer) 1127.0.0.1:6379> hgetall hash1 1) "name"2) "szk"3) "age"4) "23

服务器负载感知的URL HASH

负载均衡设备的URL哈希(HASH)功能主要应用在两种场合: 1. 大型网站.大型网站为了提高访问速率,将视频和图片等可缓存的内容缓存到CDN节点.每个CDN节点有很多台缓存服务器,前端配置负载均衡器进行流量分 担.为了提高缓存服务器的存储效率和命中率,负载均衡器通常选择URL HASH算法分配流量到缓存服务器.正常的情况下,不同缓存服务器所缓存内容是不同的,而相同URL的访问一定会到达同一台缓存服务器. 2. 互联网出口.可以是运营商城域网出口,也可以是大型企业的出口.为了提高访问速度,负载均

33. Python redis的 hash类型操作 其他常用操作

1.hash 类型操作 import redis pool = redis.ConnectionPool(host="192.168.48.131", port=6379, db=0) r = redis.Redis(connection_pool=pool) #hash类型操作:是一个name对应一个字典 #语法 hset(name, key, value) #name 对应的hash中设置一个键值对(不存在,则创建键值对:否则,修改键值对) # 语法参数解释: name: redi

redis string和hash类型操作

Redis 的数据类型 String类型及操作 String是最简单的类型,一个Key对应一个Value,sting类型是二进制安全的.Redis的string可以包含任何数据,比如jpg图片或者序列化的对象. 例子: set name gxj get name 输出:gxj Setnx:设置key对应的值为string类型的value,如果key 已经存在,则返回0,nx是not exist的意思. 例子: set name zjz 回车:则返回0,如果不存在,则会设置值 setex: 设置k

Redis hash数据类型操作

Redis hash是一个string类型的field和value的映射表.一个key可对应多个field,一个field对应一个value.将一个对象存储 为hash类型,较于每个字段都存储成string类型更能节省内存.新建一个hash对象时开始是用zipmap(又称为small hash)来存储的.这个zipmap其实并不是hash table,但是zipmap相比正常的hash实现可以节省不少hash本身需要的一些元数据存储开销.尽管zipmap的添加,删除,查找都是 O(n),但是由于

python - hash类型操作

Redis在内存中存储hash类型是以name对应一个字典形式存储的 常用操作 在name对应的hash中获取根据key获取valuehget(name,key) 在name 对应的hash 中设备键值对hset(name, key, value) 在name对应的hash中批量设置键值对hmset(name, mapping) 在name对应的hash中获取多个key的值hmget(name, keys, *args) 获取name对应hash的所有键值hgetall(name) 获取name