如何在SPA

时间:2017-06-03 02:38:13

标签: javascript jquery backbone.js single-page-application

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

我们简单而又简单的解决方案是检测所有锚定点击并检查页面加载后的时间是否> = 24小时。如果是,我们想要执行“整页”导航而不是“虚拟页面”导航。也就是说,我们希望将用户发送到#contact-us,而不是在没有页面刷新的情况下转到http://website.com#contact-us

在下面的函数中,我可以检测即将执行的“虚拟”导航。但是,我怎么能强制整页导航和刷新?我应该将anchor 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:以下内容的正确用语是什么:

  • 当用户点击链接<a href="#contact-us">时,页面不会刷新,但用户会“导航”到SPA中的新页面。什么是这个术语?我一直在称这个“虚拟页面”导航。
  • 当用户点击链接<a href="http://website.com#contact-us">时,页面会在SPA中刷新。什么是这个术语?我一直在称这个'整页'导航。

注意我们的<link ..><script ...>元素具有时间戳参数,因此在页面刷新时,它们将提取最新的Web应用程序文件。即,<script src="foo.js?t=201706031200" ...>

2 个答案:

答案 0 :(得分:0)

&#13;
&#13;
def sink3(x, y):
    return ''.join(x).count(y)


print(sink3(['a', 'a', 'c', 'd', 'e', 'e'], 'e'))
&#13;
&#13;
&#13;

答案 1 :(得分:0)

只需执行window.location=...,浏览器即可完成其余工作;)