我要做的是:当用户按下取消按钮,或通过链接或菜单选项导航页面时,我会检查是否有未保存的更改。如果是这样,我问用户他/她是否想要保存。我无法通过javascript确认窗口执行此操作,因为我有时会有两个以上的选项,所以在用户做出像确认之类的选择之前,我无法“保留”所有内容。所以我虽然要“保存”事件,取消它的当前执行,直到用户做出他/她的想法,然后根据他们的答案采取所需的行动,然后再提起原始事件。 所以,作为我想的代码示例: 我有这段代码:
var executingEvent;
function someFunction() {
...
if(existUnsavedChanges) {
showConfirmMessage();
executingEvent = window.event;
if (executingEvent.stopPropagation) { executingEvent.stopPropagation(); } else { executingEvent.cancelBubble = true; }
...
}
}
以后有办法做这样的事吗?
raise (executingEvent);
听起来有点复杂,我也欢迎其他选择:)
答案 0 :(得分:2)
触发事件使用
elem.dispatchEvent(event)
其中elem
是您在DOM中绑定或位于其下方的元素(因此它会冒泡)。
当然,如果你已经停止传播,事件就不会冒泡,所以你可能想要创建一个新的事件对象。
var ev = document.createEvent("Event");
ev.initEvent(type, true, true);
ev.origEv = originalEvent;
elem.dispatchEvent(ev);
答案 1 :(得分:0)
听起来我觉得你正在过度思考它 - 一旦用户采取了你提示的动作,你就可以举起与原始事件相同类型的事件(你会取消它)。
您可以通过检查事件对象上的属性来计算原始事件引发的内容,例如事件的类型,原始目标等。