我想要的是拥有更改页面一部分的链接,以及它的动态URL,我可以在其中指定变量等 #calendar=10_2010tabview=tab2
Check this for an exact example: 点击这里进行精确的演示
所以这是我需要的链接格式:
#calendar=10_2010&tabview=tab2
我必须像链接变量calendar和tabview这样我就可以改变一个页面上的多个万物而不realoading.
或者像http://www.wbhomes.com.au这样的其他格式,这正是我想要的,但是第一种格式也很好,但这更美观.
http://wbhomes.com.au/#/propertiesforsale/houseandland/quinnsbeach-waterland1要求
需要从例如邮件的任何地方访问,或者如果我只是在URL栏中写入.
链接应该在历史记录中,因此如果我按下后退或前进按钮,则需要访问该页面.
页面刷新也需要工作.
一些资源:
例子:
www.facebook.com - 您的个人资料页面上的侧边栏链接
www.wbhomes.com.au/ - 100%接近我想要的
一些教程:
请帮我!我从来没有找到任何解决方案来做到这一点,但我不想使用jquery或任何API,或任何库,我想有一个工作Javascript/AJAX和PHP脚本.
众所周知,在XHR(又名AJAX)Web应用程序中,没有为您的应用程序构建历史记录,单击刷新按钮通常会将用户移出他/她当前的活动.我偶然发现了location.hash(例如http://anywhere/index.html#somehashvalue)来规避刷新问题(使用location.hash通知你的应用程序它的当前状态并使用页面加载处理程序来重置该状态).这真的很好很简单.
这让我想到使用location.hash来跟踪我的应用程序的历史记录.我不想使用现有的库,因为它们使用iframe等.所以这是我的镍和硬币:当应用程序页面加载时我开始这样:
setInterval(
function(){
if (location.hash !== appCache.currentHash) {
appCache.currentHash = location.hash;
appCache.history.push(location.hash);
/* ... [load state using the hash value] ... */
return true;
}
return false;
}, 250
);
Run Code Online (Sandbox Code Playgroud)
(appCache是包含应用程序变量的预定义对象)想法是从哈希值触发应用程序中的每个操作.在体面的浏览器中,哈希值更改会在历史记录中添加一个条目,在IE(<= 7)中则不会.在所有浏览器中,向后或向前导航到具有其他哈希值的页面不会触发页面刷新.这就是间隔函数接管的地方.每次检测到哈希值更改(通过编程方式,或通过单击后退或前进)时,应用程序都可以采取适当的操作.应用程序可以跟踪它自己的历史记录,我应该能够在应用程序中显示历史记录按钮(特别是对于IE用户).
据我所知,这可以跨浏览器工作,并且在内存或处理器资源方面没有任何成本.所以我的问题是:这是否是管理XHR-apps历史的可行解决方案?优缺点都有什么?
更新:因为我使用我的自制框架,我不想使用现有的框架之一.为了能够在IE中使用location.hash并将其包含在历史中,我创建了一个简单的脚本(是的,它需要一个iframe),这可能对你有用.我在我的网站上发布它,随意使用/修改/批评它.
我正在编写一个使用AJAX检索大量数据的Web应用程序,它基本上根据用户点击的按钮修改加载的页面(假设点击button1将页面从state0转到state1,依此类推......)
此外,如果按钮号作为GET变量传递给服务器,则服务器以正确的状态返回页面.
毋庸置疑,后退/前进浏览器按钮不起作用,因为在通过AJAX完成状态更改期间不会更改URL.
所以,我的问题是,如何使浏览器后退/前进按钮工作?
是否可以在每次状态更改时为浏览器提供正确的URL; 但是停止重新加载页面?
请注意,此问题仅与浏览器后退/前进按钮有关.我可以创建自定义后退/前进按钮,但这不是我想要做的.