如何基于 url hash url#nameoffunction 执行 js 函数
How to execute a js function based on url hash url#nameoffunction
我看到一些网站根据URL中的has执行JavaScript函数。例如
当我访问 http://domain.com/jobs#test 时
然后网站执行一个基于 #test 的功能
我可以通过检查 location.href 来做到这一点,但是有更好的方法吗?
这就是我所做的:
window.onload = function(){
var hash = (window.location.hash).replace('#', '');
if (hash.length == 0) {
//no hash do something
}
else {
//else do something with hash
}
}
演示:http://jsfiddle.net/maniator/XCjpy/show/#test
演示2:http://jsfiddle.net/maniator/XCjpy/show/
演示3:http://jsfiddle.net/maniator/XCjpy/show/#testing_again
如果您不需要支持 IE6 和 IE7 等旧浏览器,您可以使用:
window.onhashchange = function(){
switch(location.hash) {
case '#hash1':
//do something
break;
case '#has2':
//do something else
break;
}
}
但是,如果您必须支持较旧的浏览器,则需要轮询:
var oldHash = location.hash;
setInterval(function(){
if(location.hash !== oldHash){
oldHash = location.hash;
//hash changed do something
}
}, 120);
现场演示
$(window).bind('hashchange', function() {
var hash = document.location.hash;
var func = hash.replace('#', '');
eval(func + '()');
});
function asdf() {
alert('asdf function');
}
function qwerty() {
alert('qwerty function');
}
注意:eval()
很危险。您应该创建一个预定义的安全函数数组,并调用这些函数。
看看这个。
请参阅属性表.
location.hash应该可以帮助你。
你可以使用像YUI这样的库来更优雅地做到这一点,看看YUI浏览器历史管理器
http://developer.yahoo.com/yui/history/
相关文章:
- Meteor:插入集合后如何执行JS
- 如何在Odoo 9中执行JS文件中的函数
- 匿名自执行js函数内部的全局变量在外部仍然可用
- NumericTextBox-当用户键入数字时执行JS计算.能做到吗
- 引导:响应式设计-当窗口大小从980px调整到979px时执行JS
- 对页面上的所有ID执行JS功能
- 从浏览器访问页面时执行js函数's后退按钮
- 源代码未完全执行.(JS)
- 在执行JS脚本后监视对DOM的更改
- 在表单同步提交后执行 js 吗?
- 在 ubuntu 14.04 VPS 上执行.js文件错误
- 从PHP插入时在MongoDB上执行JS
- 在将ajax内容应用到元素后执行js函数
- Windows Phone浏览器控件执行JS函数来替换src属性
- 到达新页面后执行js
- 用C#在Win 8.1 Chakra中执行JS的一个失败的最小例子
- 在sharepoint显示模板中执行JS
- 在Bootstrap popover内部执行JS
- 从引导程序popover内容内部执行js
- 顺序执行js