我正在听nsIHTMLEditor transactionManager并试图阻止contenteditable做一些我想要讨论的事情:
let transactionManager = {
didDo: (aManager, aTransaction, aDoResult) => {},
willDo: function (aManager, aTransaction) {}
...
}
nsIHTMLEditor.transactionManager.AddListener(transactionManager);
是否有办法阻止该交易,例如event.preventDefault
。我可以使用aTransaction.undoTransaction();
但不适用于willMerge并且似乎无法使用。
谢谢。
修改
感谢nmaier的回答,以防止您需要return true
的交易。但是,在我目前的Firefox,29.1上,返回true会导致Firefox崩溃。通过抛出错误来管理:
willDo: function (aManager, aTransaction) {
throw Components.Exception("Error message");
}
答案 0 :(得分:0)
willDo
返回boolean
,当true
将中断交易时。{/ p>
当在javascript中实现而不返回任何内容时,它将返回undefined
,这将被强制转换为false
,这就是您的代码首先工作的原因。
因此,如果您想阻止交易,只需从true
返回willDo
。