4

我想做的是:当用户按下取消按钮,或通过链接或菜单选项离开页面时,我检查是否有未保存的更改。如果是这样,我会询问用户是否要保存。我不能使用 javascript 确认窗口来执行此操作,因为有时我有两个以上的选项,所以我不能“保留”所有内容,直到用户做出像确认那样的选择。所以我想“保存”事件,取消它当前的执行,直到用户下定决心,然后根据他们的答案采取所需的行动,然后恢复原始事件。因此,作为我所想的代码示例:我有这段代码:

var executingEvent;
function someFunction() {
    ...
    if(existUnsavedChanges) {
        showConfirmMessage();
        executingEvent = window.event;
        if (executingEvent.stopPropagation) { executingEvent.stopPropagation(); } else { executingEvent.cancelBubble = true; }
        ...
    }
}

有没有办法以后做这样的事情?

raise (executingEvent);

听起来有点复杂,我也欢迎其他选择:)

4

2 回答 2

2

触发事件使用

elem.dispatchEvent(event)

elem您在 DOM 中绑定到或低于它的元素在哪里(所以它会冒泡)。

当然,如果您已经停止传播,则事件不会冒泡,因此您可能想要创建一个新的事件对象。

var ev = document.createEvent("Event");
ev.initEvent(type, true, true);
ev.origEv = originalEvent;
elem.dispatchEvent(ev);
于 2011-11-02T11:32:24.127 回答
0

在我看来,您想得太多了——一旦用户采取了您提示的操作,您就可以引发与原始事件相同类型的事件(您会取消)。

您可以通过检查事件对象的属性(例如事件类型、原始目标等)来确定引发的原始事件是什么。

于 2011-11-02T11:29:48.180 回答