Javascript Firefox nsITransactionListener,防止willDo/didDo发生
我正在收听nsIHTMLEditor transactionManager,并试图阻止contenteditable做一些我想讨论的事情: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
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