Одна вещь, которую я сразу заметил, заключается в том, что опубликованный вами код использует OnNodeDropped (или, по крайней мере, это название функции), а не OnClientNodeDropping. Однако, если предположить, что это действительно та функция, которую вы используете, все, что вам действительно нужно добавить, - это проверка результата в диалоговом окне. Итак, в вашем примере:
function OnNodeDropped(sender, args) {
var srcNode = args.get_sourceNode();
var destNode = args.get_destNode();
var dNode = destNode._contentElement.innerHTML.indexOf("inActiveCategory");
if (dNode >= 0) {
//Call a modal dialog here and return true of false instead of using the old school confirm
var result = confirm("This category is inactive. Moving to " + destNode.get_text() + " will set " + srcNode.get_text() + " to inactive as well! ");
//get the return value from the dialog, is it canceled or ok
if(result){
args.set_cancel(false);
}
else{
args.set_cancel(true);
}
}
}
Я полагаю, что использование этого подхода должно позволить сценарию ждать, пока пользователь нажмет OK или Отмена.