【问题标题】:Ask confirmation BEFORE Redirect from page在从页面重定向之前询问确认
【发布时间】:2015-05-05 13:47:03
【问题描述】:

我有申请。 客户端是-淘汰赛。

所以我有一个带有表单的页面,我想在他尝试转到另一个页面之前询问用户确认(以防他更改了某些内容(此部分已准备好))

所以在所有网站上路由 - 它的 Sammy.js。

我试过了: Sammy JS - 之前

function ViewModel()
{
  Sammy.before(/.*/, function () {

        if (window.confirm('Really go to another page?')){

        }
        else{
            //DO NOTHING AND STAY IN THE SAME PAGE
            //OR SOMETHING ELSE THAT YOU WANT

            return false;
        }

     });
}

它的工作,但它仍然适用于所有网站 - 而且它很糟糕。 我没有找到禁用它的方法,所以也许我可以在没有 sammy 的情况下做到这一点???

谢谢你们!

更新:这个网站是 SPA

【问题讨论】:

  • 你可以用简单的JS,window.onbeforeunload = function() { if(something_is_changed) { return '真的去另一个页面吗?'; } }
  • 您可以在要求确认之前检查form_id
  • 不,伙计们-我忘了说-我的网站是SPA。所以 inbeforeunload - 只能使用 F5/ctrl+r,但如果我尝试另一个选项卡 - 他不喜欢重新加载,因为 SPA
  • 大卫,有人知道 Sammy.js 是什么吗,他知道这是一个 SPA 并且没有给出这种答案。这不是你的错,而是他们没有注意回答的错。
  • 我在这里回答了类似的问题:stackoverflow.com/a/23955762/394418

标签: javascript jquery sammy.js


【解决方案1】:

您可以使用before,但您必须指定选项以仅在必要时显示确认对话框。请参阅docs。您指定为所有路由运行它,您必须指定要在哪些路由中执行它。之前选项只为您提供下一条路线的信息。如果它依赖于当前的路由,你可以检查当前的 url:

function extractSammyUrlFrom (context)
{
  // get the hash fragment (curernt route)
  "#" + context.path.split("#")[1] ;
}

如果它依赖于页面中的任何其他内容,请在显示对话框之前检查它。

【讨论】:

  • 我知道。但我需要所有路线!因为我想问他用户是否想要离开当前页面 - 他去哪个页面并不感兴趣 - 因为我需要所有页面
  • 那么,答案是什么?你让它适用于所有网站,不是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2016-04-03
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多