处理脏表格中的重定向

时间:2013-07-08 02:43:00

标签: javascript html forms

在我的表单上,用户可以修改它,即使其变脏,然后单击“取消”按钮。

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

然而,当我按下“取消”按钮时,我注意到window.location仅在我点击“确定”(IE8)或“离开此页面”(FF或Chrome)时才会改变。但是,如果我点击“取消”(IE8)或“留在此页面”(FF或Chrome),则实际window.location更改。

这是如何运作的?

编辑,包括代码:

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

2 个答案:

答案 0 :(得分:1)

As @マルちゃんだよ说,如果用户不允许,你不能强制重定向。它不会发生。但是,需要提出的问题是“取消”操作的作用,以及您是否确实需要使用Javascript。

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

或者,如果取消意味着将用户带到不同的位置,那么虽然单词可能会说取消,但该按钮实际上是提交表单并重新定位它们。因此,将按钮设为type=submit,捕获表单被取消的事实(甚至可以存储它以便用户以后可以返回它),并将服务器端重定向到右侧页面。这样做的另一个好处是,您可以跟踪有多少用户进行控制,并在Javascript关闭或不可用时工作。

答案 1 :(得分:0)

您所要求的将是一个重大的安全漏洞。我担心你永远无法做到这一点。

但是,您可以控制父级已打开的子窗口。假设你打开一个带有父窗口的弹出窗口,同一个父窗口可以有一个关闭孩子的按钮。从来没有主窗口。

对于该确认对话框中的“取消”事件,您始终可以处理它:

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
    }
}

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