栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 面试经验 > 面试问答

Hashbang与URI解析

面试问答 更新时间:发布时间: 百科书网 趣学号

我认为您正在寻找history.pushState网址,该网址可让您进行部分页面加载,并且无论是否带有javascript,它们都具有相同的网址。

例如,假设您的基本url为

http://site.com/
With
history.pushState,则可以使用javascript将页面修改为
javascript.htm
,以便url更改为
http://site.com/javascript.htm

#!
网址仅适用于javascript,因为#fragment无法在服务器端访问。使用hashbangs时,您的网址应类似于“
http://site.com/#javascript.htm
注意”,这
!
是不必要的。由于您可以在哈希之后设置任何内容,因此也可以使用url
http://site.com/#!/javascript.htm

不幸的是,由于IE不支持history.pushState,因此必须将

#!
URL作为备用。

两种方法都不会破坏后退按钮,但是必须为每种方法设置不同的URL。

Hashbangs的工作方式如下:

function change(){   //page update logic}//hashchange event binding(typeof window.addeventListener === "function")    ? window.addEventListener("hashchange", change, false)    : window.attachEvent("onhashchange", change); //This is how the hash is set location.hash = "hashstring"; //Accessing it returns the hashstring, with a # location.hash; //returns #hashstring

由于您将页面的“状态”存储在对象中,因此History.pushState稍微复杂一些。

以下是有关此方法的一些很好的参考:

  • Javascript:权威指南第6版
  • https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
  • http://diveintohtml5.ep.io/history.html

两种方法都需要javascript页面操作。我有这类网址的一个例子。http://timshomepage.net/comic/具有指向许多其他网络漫画的链接,并将它们嵌入到页面的iframe中。禁用javascript后,链接将类似于http://timshomepage.net/comic/dilbert。使用history.pushState,我可以拥有相同的URL。通过hashbang后备,我得到一个这样的URL:http
://timshomepage.net/comic/#!/dilbert



转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/418242.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号