【问题标题】:Handling Re-direct in Dirty Form处理脏表单中的重定向
【发布时间】:2013-07-08 02:42:59
【问题描述】:

在我的表单上,用户可以对其进行修改,即将其弄脏,然后单击“取消”按钮。

取消按钮的 onClick() 行为是更改window.location

但是,当我按下“取消”按钮时,我注意到 window.location 只有在我单击“确定”(IE8)或“离开此页面”(FF 或 Chrome)时才会更改。但是,如果我单击“取消”(IE8) 或“留在此页面上”(FF 或 Chrome),那么实际的 window.location 确实不会改变。

这是如何工作的?

编辑包括代码:

function (buttonPressed) { // called when Cancel button is pressed
   window.location = ...;
}

【问题讨论】:

  • 你能看到一些代码吗?
  • 当然。我刚刚更新了它。

标签: javascript html forms


【解决方案1】:

正如@マルちゃんだよ 所说,如果用户不允许,您不能强制重定向。它只是不会发生。但是,需要问的问题是您的“取消”操作是做什么的,以及您是否真的需要为此使用 Javascript。

如果您希望取消按钮重置整个表单,有两种方法可以做到这一点

或者,如果取消是为了将用户带到不同的位置,那么虽然单词可能会说取消,但按钮实际上是在提交表单并重新定位它们。因此,将按钮设为type=submit,捕获表单已取消的事实(甚至可以存储它以便用户稍后返回),并将它们重定向到服务器端到正确的页面。这还有一个额外的好处,您可以跟踪有多少用户正在取消,以及在 Javascript 关闭或不可用时工作。

【讨论】:

  • 嗨@乐高。当用户单击我的取消按钮时,会出现一个 IE(脏表单)提示 - “您确定要导航...”。如果用户单击“确定”,那么我希望发生重定向。如果用户选择“取消”,我希望用户停留在当前页面上。此行为当前有效,但在单击“取消”-->“取消”时会出现明显无害的 IE8 脚本错误。是否需要添加JS代码来处理IE8脏表单提示的结果?
  • 我不明白 - "Cancel -> Cancel" 是什么意思?
  • 我按下按钮上的取消,然后在 IE8 对话框中按下取消,“你确定要离开吗?”
  • 是的,您无法阻止该对话框弹出。否则它是一个安全漏洞。
  • 你确定吗?我以为window.onbeforeunload = null 会禁用它?另外,IE8 unspecified error 是 IE8 问题吗?我该如何处理它
【解决方案2】:

您要求的是重大安全漏洞。恐怕你永远做不到。

但是,您可以控制父级打开的子窗口。假设您打开了一个带有父窗口的弹出窗口,同一个父窗口可以有一个按钮来关闭子窗口。永远不要主窗口。

至于确认对话框中的“取消”事件,您可以随时处理:

window.onbeforeunload = function () {
    if (confirm('Are you sure you want to leave this page?')) {
        return; // allow user to exit without further annoying pop-ups
    } else {
        // Handle the Cancel event
        // ...

        return "Do you really, really want to Exit?"; // Make the browser ask for confirmation again
    }
}

如果用户做了某事离开页面,那么您可以告诉浏览器询问他们是否确定。你不能默默地阻止它们。如果用户希望离开页面,那么他们可以这样做(充满广告和/或恶意软件的狡猾网站会喜欢它,幸好不是)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
  • 2012-03-14
相关资源
最近更新 更多