如何通过 javascript 单击 Dynamics 365 Ribbon 按钮

问题描述 投票:0回答:3

我正在尝试弄清楚如何单击 D365 功能区上的按钮。该按钮将刷新页面,我将走这条路线,因为最终我想刷新页面上的所有元素。 我尝试通过查询选择器进行访问,但没有成功

document.querySelector("#rr_jobprofile\\|NoRelationship\\|Form\\|Mscrm\\.Modern\\.refreshCommand72 > button").click();

按钮的 html

<button aria-label="Refresh" aria-hidden="true" title="Refresh" tabindex="-1" data-id="rr_jobprofile|NoRelationship|Form|Mscrm.Form.rr_jobprofile.RefreshModernButton" data-lp-id="Form:rr_jobprofile-rr_jobprofile|NoRelationship|Form|Mscrm.Form.rr_jobprofile.RefreshModernButton" type="button" class="pa-ak pa-kx pa-go pa-ep pa-aj pa-om pa-at pa-sx pa-sy flexbox"><span class="pa-az pa-ah pa-a pa-hh "><span class="pa-ho pa-hj pa-st pa-cd pa-bd pa-a pa-at "><img src="/uclient/resources/images/Refresh.svg?v=1.4.2043-2012.2" alt="" title="" class="pa-oh pa-cg pa-bd pa-cc "></span><span aria-label="Refresh" tabindex="-1" class="pa-hj pa-bd pa-st pa-v pa-e pa-cm pa-oz pa-cl ">Refresh</span></span></button>
javascript jquery dynamics-crm
3个回答
1
投票

真的真的真的建议不要操作或导航 DOM。 formContext.Controls 集合中有一些方法可以刷新页面上需要它的任何控件或页面本身。刷新 HTML Web 资源不太明显,但我使用控件的 getSrc() 和 setSrc() 函数取得了很好的成功。这个功能(不是我的,我几年前在一些博客上得到它并将其添加到我的工具箱中)工作得很好,并且可以在表单(例如加载或更改时)和功能区上工作。

function refreshWebResource(executionContext, WebRrscName) {    
    var _crmForm = executionContext.getFormContext();
    var webResource = _crmForm.getControl(WebRrscName);
    if (webResource != null) {
        var webResourceSrc = webResource.getSrc();
        webResource.setSrc(null);
        webResource.setSrc(webResourceSrc);
    }
}

代码原始来源:https://community.dynamics.com/crm/f/microsoft-dynamics-crm-forum/232589/refreshing-the-web-resource-in-dynamics-365


0
投票

尝试

document.querySelector('[data-id="rr_jobprofile|NoRelationship|Form|Mscrm.Form.rr_jobprofile.RefreshModernButton"]').click()

数据属性选择器使用 属性选择器 语法,而不是以标签名称或字符

#
.
开头。例如

  • button[data-id=xxxx]
    选择
    data-id
    属性值恰好为
    xxxx
    的按钮。

  • button[data-id|=xxxx]
    选择一个按钮,其
    data-id attribute value starts with 
    xxxx`。

    `


0
投票

将按钮标题名称更改为您想要的名称。

函数 clickconnectsequence() {

var buttons = window.parent.document.getElementsByTagName('button');
console.log(buttons)
var xdata="noluck"
var addInfo = Xrm.Page.getAttribute("trc_connectsequence").getValue();
if (addInfo && addInfo == 1)
{
for (let i = 0; i < buttons.length; i++) {
    let button = buttons[i];
    if (button.title == "Connect sequence"){
        xdata="Connect sequence";
        console.log(button.id);
        window.parent.document.getElementById(button.id).click();}

    }
if(xdata!="Connect sequence"){
    for (let i = 0; i < buttons.length; i++) {
        let button = buttons[i];
        if (button.title == "More commands for Lead"){
            console.log(button.id);
            window.parent.document.getElementById(button.id).click();
            var buttons = window.parent.document.getElementsByTagName('button');
            for (let i = 0; i < buttons.length; i++) {
                let button = buttons[i];
                if (button.title == "Connect sequence"){
                    xdata="Connect sequence";
                    console.log(button.id);
                    window.parent.document.getElementById(button.id).click();}
       
                }
        }

        }
    }
}
}
© www.soinside.com 2019 - 2024. All rights reserved.