0

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

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

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

这是如何运作的?

编辑包括代码:

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

2 回答 2

1

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

如果您希望取消按钮重置整个表单,有办法做到这一点,要么

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

于 2013-07-08T03:05:17.637 回答
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
    }
}

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

于 2013-07-08T02:54:48.440 回答