2014-04-28 10 views
0
내가 nsIHTMLEditor의 transactionManager을 듣고 있어요

을 발생하지 willDo/didDo을 방지하고 내가 dissalow 할 몇 가지 일을에서의 contentEditable을 방지하기 위해 노력 :파이어 폭스 nsITransactionListener,

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

nsIHTMLEditor.transactionManager.AddListener(transactionManager); 

것은에서 해당 거래를 방지하는 방법이 있나요 만들었습니다. event.preventDefault과 같은 것입니다. aTransaction.undoTransaction();을 사용할 수는 있지만 willMerge에서는 작동하지 않으며 부적절한 것으로 보입니다.

감사합니다.

편집

감사합니다 당신이 return true에 필요한 트랜잭션을 방지하기 위해 nmaier 대답을. 그러나, 현재의 파이어 폭스에서 29.1은 true로 돌아가는 Firefox를 반환합니다. 오류를 발생시켜 이것에 의해 얻을 관리 :

willDo: function (aManager, aTransaction) { 
    throw Components.Exception("Error message"); 
} 

답변

0

willDotrue는 거래를 중단하는 boolean을 반환합니다.

아무 것도 반환하지 않고 자바 스크립트에서 구현하면 undefined이 반환되며 이는 false으로 강제 변환됩니다. 그래서 코드가 처음부터 작동합니다. 거래를 막으려면 truewillDo에서 반환하십시오.

+0

니스! 고맙습니다 – Mircea