如果没有操作,15秒后重定向页面

时间:2016-08-28 21:27:01

标签: javascript ruby-on-rails

我正在为一家咖啡店开设订阅应用程序。现在订户可以使用他们的电话号码登录。在他们登录后,它会将他们引导到一个页面,向用户显示他们花了多少钱,访问次数等的一些统计数据。我的问题是这个。如果没有按下任何键或者没有在该页面上点击,有没有办法可以使页面重定向回主页?仅当用户在页面上没有操作时。我觉得这可能是一个Javascript的东西,但我不确定?如果您需要更多信息,请告诉我?谢谢!

登录方法:

  def search
    @subscriber = Subscriber.new
  end

  def visit
    @subscriber = Subscriber.find_by_phone_number(params[:phone_number])
    if @subscriber
      @subscriber.visit ||= 0
      @subscriber.visit += 1
      @subscriber.save
      render "visit"
    end
  end

1 个答案:

答案 0 :(得分:3)

首先,你必须对你的意思更具体一点,没有采取行动"。以下是一些例子:

  • 鼠标光标尚未移动
  • 没有按任何键
  • 没有点击

它可以是任何这些或许多其他事物的组合。

让我们说"没有行动"意思是"没有点击任何东西,也没有按任何键并且没有移动鼠标"。

在这种情况下,可以像这样开始超时:

var redirectTimeoutId = window.setTimeout(redirectToHomepage, 15000)

这会在15秒(15000毫秒)后调用函数redirectToHomepage

现在您想拥有该功能redirectToHomepage

function redirectToHomepage() {
  window.location.href = '/home'; // or whatever your homepage would be
}

好的,但如果用户点击,您如何避免调用该函数? 好吧,你只需要注册一个事件处理程序,但是在捕获阶段,所以页面上的任何内容都不会取消你:

window.addEventListener('click keypress mousemove', function() { 
  window.clearTimeout(redirectTimeoutId)
}, true)