Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在SPA中强制进行完整页面导航而不是虚拟页面导航_Javascript_Jquery_Backbone.js_Single Page Application - Fatal编程技术网

Javascript 如何在SPA中强制进行完整页面导航而不是虚拟页面导航

Javascript 如何在SPA中强制进行完整页面导航而不是虚拟页面导航,javascript,jquery,backbone.js,single-page-application,Javascript,Jquery,Backbone.js,Single Page Application,我们有一个单页应用程序,我们只想确保用户始终使用最新版本的web应用程序 我们的简单解决方案,尽管有点老套,但就是检测所有的锚点击,并检查页面加载后的时间是否大于等于24小时。如果是,我们希望执行“完整页面”导航,而不是“虚拟页面”导航。也就是说,我们希望将用户发送到http://website.com#contact-us将发生页面刷新的位置 在下面的功能中,我可以检测到即将执行的“虚拟”导航。但是我怎样才能强制进行完整的页面导航和刷新呢?我是否应该将锚href属性更改为完整网站路径,然后允许

我们有一个单页应用程序,我们只想确保用户始终使用最新版本的web应用程序

我们的简单解决方案,尽管有点老套,但就是检测所有的锚点击,并检查页面加载后的时间是否大于等于24小时。如果是,我们希望执行“完整页面”导航,而不是“虚拟页面”导航。也就是说,我们希望将用户发送到
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')