基于哈希或查询字符串加载动态内容
Loading dynamic content based on hash or query string
我要创建一个单页的javascript应用程序。它将根据正在修改的 url 加载不同的页面内容,通过哈希或 html 历史记录 API 加载,具体取决于浏览器。
我虽然使用此插件是为了为旧浏览器提供哈希回退。
var location = window.history.location || window.location;
handleUrlChange(location.href);
$(document).on('click', 'a.ajax', function(e) {
e.preventDefault();
history.pushState(null, null, this.href);
handleUrlChange(this.href);
});
$(window).on('popstate', function(e) {
handleUrlChange(location.href);
});
function handleUrlChange(url){
// example url: www.foo.com?page=details&id=1
var page = getQueryStringParam('page') || 'index';
$('#dynamic-content').load(page + '.html');
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div id="header"></div>
<div id="dynamic-content"></div>
<div id="footer"></div>
</body>
</html>
我的问题是是否有任何框架已经这样做了?我不想在这里重新发明轮子。
有很多解决方案,例如:
- https://millermedeiros.github.io/crossroads.js/
- http://stoodder.github.io/finchjs/
- http://backbonejs.org/#Router
- https://docs.angularjs.org/tutorial/step_07
您可以选择最适合您的。如果你不想使用模型或集合等骨干功能,或者角度框架,并且只需要路由,请使用crossroads.js或finch.js,或者只是输入google:"Javascript routeting"来查找其他库。
就个人而言,我只使用骨干路由。
http://backbonejs.org/#Router
它易于使用,自动检查是否可以使用历史记录 API,如果不能,则使用哈希导航。
相关文章:
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 如何根据对具有多行的先前列表的选择来动态加载下拉列表
- 动态加载和卸载js文件
- 动态加载angularjs并生成控制器和范围
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 动态加载fancybox并将其连接
- 对插件初始化后动态加载的元素进行样式设置
- 动态加载的自定义javascript/jQuery/HTML5音频播放器的问题
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- 使用jquery垂直对齐动态加载的图像
- 在动态加载的对话框中执行Javascript
- angularjs-bindng-click从jquery动态加载DOM
- 在动态加载的html中使用角度控制器
- 如何使用Javascript在FireFox中将html从内存动态加载到iframe中
- 使用systemJS的相对动态加载,使用ES6/Babel语法
- 为什么动态加载的事件在我的代码中不能正常工作
- 在不同的域上动态加载样式表;不适用于Firefox
- 在动态加载的PHP表单上放置JavaScript事件
- 在混合基本 URL 下动态加载 require.js 模块
- 动态加载引导模式主体