Javascript Firefox nsITransactionListener,防止willDo/didDo发生

Javascript Firefox nsITransactionListener,防止willDo/didDo发生,javascript,firefox,xpcom,Javascript,Firefox,Xpcom,我正在收听nsIHTMLEditor transactionManager,并试图阻止contenteditable做一些我想讨论的事情: let transactionManager = { didDo: (aManager, aTransaction, aDoResult) => {}, willDo: function (aManager, aTransaction) {} ... } nsIHTMLEditor.transactionManager.AddLis

我正在收听nsIHTMLEditor transactionManager,并试图阻止contenteditable做一些我想讨论的事情:

let transactionManager = {
   didDo: (aManager, aTransaction, aDoResult) => {},
   willDo: function (aManager, aTransaction) {}
   ...
}

nsIHTMLEditor.transactionManager.AddListener(transactionManager);
有没有一种方法可以阻止事务的进行,比如event.preventDefault。我可以使用aTransaction.undoTransaction;但对willMerge不起作用,似乎表现不佳

多谢各位

编辑

感谢nmaier的回答,为了防止交易,您需要返回true。然而,在我当前的Firefox 29.1上,返回true会使Firefox崩溃。通过抛出错误来解决此问题:

willDo: function (aManager, aTransaction) {
  throw Components.Exception("Error message");
}
返回一个布尔值,为true时将中断事务

当在javascript中实现而不返回任何内容时,它将返回undefined,而undefined将被强制为false,这就是代码首先工作的原因。 因此,如果要阻止事务,只需从willDo返回true