Javascript 防止在dynamics 365中双击时打开记录

Javascript 防止在dynamics 365中双击时打开记录,javascript,dynamics-365,Javascript,Dynamics 365,我已经为抽象实体设置了一个队列。我试图阻止双击打开记录。我已经为事件设置了一个处理程序,并在事件对象上调用.stopPropagation()和.preventDefault(),它将继续打开窗口 不确定我是否遗漏了什么明显的东西。。这是我的密码: function attachDoubleClick() { var grid = document.getElementById("gridBodyTable"); if (grid == null) { setTi

我已经为抽象实体设置了一个队列。我试图阻止双击打开记录。我已经为事件设置了一个处理程序,并在事件对象上调用.stopPropagation()和.preventDefault(),它将继续打开窗口

不确定我是否遗漏了什么明显的东西。。这是我的密码:

function attachDoubleClick() {
    var grid = document.getElementById("gridBodyTable");
    if (grid == null) {
        setTimeout(function () { attachDoubleClick(); }, 2000); //if the grid hasn’t loaded run this again
        return;
    }

    function handler(e) {
        var abstractId = document.getElementsByClassName("ms-crm-List-SelectedRow").item().getAttribute("oid").replace("}", "").replace("{","");
        XrmSvcToolkit.retrieve({
            entityName: "prod_abstract",
            id: abstractId,
            select: ["prod_abstractstatus"],
            async: false,
            successCallback: function (result) {
                if (result.prod_abstractstatus.Value != 108410000) {
                    alert("This abstract is already being worked on or is completed.");
                    e.stopPropagation();
                    e.preventDefault();
                    console.log(e);
                    return;
                }
            },
            errorCallback: function (error) {
                console.log(error);
            }
        });
    }
    grid.ondblclick = handler;
}



问题是我需要用第三个参数true添加ventlistener。(这是useCapture参数。)结束代码如下所示:

function attachDoubleClick() {
    var grid = document.getElementById("gridBodyTable");
    if (grid == null) {
        setTimeout(function () { attachDoubleClick(); }, 2000); //if the grid hasn’t loaded run this again
        return;
    }
    grid.addEventListener("dblclick", handler, true);
}


function handler(e) {
    console.log(e);
    var abstractId = document.getElementsByClassName("ms-crm-List-SelectedRow").item().getAttribute("oid").replace("}", "").replace("{", "");
    XrmSvcToolkit.retrieve({
        entityName: "prod_abstract",
        id: abstractId,
        select: ["prod_abstractstatus"],
        async: false,
        successCallback: function (result) {
            if (result.prod_abstractstatus.Value != 108410000) {
                alert("This abstract is already being worked on or is completed.");
                e.stopPropagation();
                e.preventDefault();
                return;
            }
        },
        errorCallback: function (error) {
            console.log(error);
        }
    });

}
您是否尝试了“return false;”而不是在成功回调中返回?