我正在尝试弄清楚如何单击 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>
真的真的真的建议不要操作或导航 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);
}
}
尝试
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`。
`
将按钮标题名称更改为您想要的名称。
函数 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();}
}
}
}
}
}
}