Javascript 如何在SPA中强制进行完整页面导航而不是虚拟页面导航
我们有一个单页应用程序,我们只想确保用户始终使用最新版本的web应用程序 我们的简单解决方案,尽管有点老套,但就是检测所有的锚点击,并检查页面加载后的时间是否大于等于24小时。如果是,我们希望执行“完整页面”导航,而不是“虚拟页面”导航。也就是说,我们希望将用户发送到Javascript 如何在SPA中强制进行完整页面导航而不是虚拟页面导航,javascript,jquery,backbone.js,single-page-application,Javascript,Jquery,Backbone.js,Single Page Application,我们有一个单页应用程序,我们只想确保用户始终使用最新版本的web应用程序 我们的简单解决方案,尽管有点老套,但就是检测所有的锚点击,并检查页面加载后的时间是否大于等于24小时。如果是,我们希望执行“完整页面”导航,而不是“虚拟页面”导航。也就是说,我们希望将用户发送到http://website.com#contact-us将发生页面刷新的位置 在下面的功能中,我可以检测到即将执行的“虚拟”导航。但是我怎样才能强制进行完整的页面导航和刷新呢?我是否应该将锚href属性更改为完整网站路径,然后允许
http://website.com#contact-us
将发生页面刷新的位置
在下面的功能中,我可以检测到即将执行的“虚拟”导航。但是我怎样才能强制进行完整的页面导航和刷新呢?我是否应该将锚href属性更改为完整网站路径,然后允许事件传播?或者我应该只做window.location=代码>
events: {
'click a[href!=""]': 'onClick'
}
onClick: function(ev)
{
try {
var now = new Date()
, hoursSinceLastRefresh = Math.abs(now - this.lastRefresh) / 36e5
, href = ev.currentTarget.attr('href')
, isVirtualNavigation = href.substr(0,1) === '#'
, pageExpired = hoursSinceLastRefresh >= 24;
// if is internal navigation
if (isVirtualNavigation && pageExpired)
// How can I force a 'full page' navigation not a virtual navigation?
}
catch (ex) {
}
}
PS:以下术语的正确含义是什么:
- 当用户单击链接时,页面不会刷新,但用户会“导航”到SPA中的新页面。这个词是什么意思?我一直称之为“虚拟页面”导航李>
- 当用户单击链接时,SPA中的页面会刷新。这个词是什么意思?我一直称之为“整页”导航李>
请注意,我们的
和
元素具有时间戳参数,因此在页面刷新时,它们将提取最新的web应用程序文件。例如,
事件:{
'单击a[href!=“”]:'onClick'
}
onClick:功能(ev)
{
试一试{
var now=新日期()
,hoursSinceLastRefresh=Math.abs(现在-this.lastfresh)/36e5
,href=ev.currentTarget.attr('href')
,isVirtualNavigation=href.substr(0,1)='#'
,pageExpired=小时SincelasteRefresh>=24;
//如果是内部导航
如果(iVirtualNavigation&&pageExpired){
href.reload(true);
}
}
捕获(ex){
}
}
只需打开一个窗口。位置=…
浏览器将完成其余工作;) 单击锚定标记会触发主动导航到另一个页面会触发(除其他外)。也许可以看看周围的文档。它可能会给你一些想法。谢谢你的评论和回答。href.reload(true)
是否会重新加载当前页面而不是用户试图导航到的页面?我不这么认为,因为您没有将var href
设置为当您这样做时正在单击的锚定标记的href属性值:href=ev.currentTarget.attr('href')
?