document.getElementById 总是 returns "null" 丝带
document.getElementById always returns "null" for ribbons
我需要设置表单功能区中其中一个按钮的背景颜色。 Ribbon Workbench 不支持此功能,因此我编写了以下 javascript 来实现相同的目的:
function setOpportunityRibbonsAppearance() {
var submitToForeCastButton = parent.document.getElementById("opportunity|NoRelationship|Form|sfw.opportunity.Button1.Button");
if (submitToForeCastButton != null) {
submitToForeCastButton.style.backgroundColor = "lightyellow";
}
}
我已经在表单加载事件中注册了这个脚本。但是问题是,我总是只将 parent.document.getElementById 设为 null。
令人惊讶的是,我能够在浏览器的控制台中看到控件 while 运行 parent.document.getElementById 语句,并且还可以更改样式属性。
任何人都可以提出这里可能有什么问题吗?
P.S。 - 我知道不建议在 CRM 中使用 document.getElementById,但是,在尝试更改某些按钮的外观时我别无选择。
如有任何帮助,我们将不胜感激。
可能是因为您的脚本 运行 在页面完全加载之前。
尝试为函数添加延迟 Put a Delay in Javascript
您可以上传黄色背景的图标,以确保所有内容均受支持。您不会看到黄色文字,但它可能适合您。简单标准。
为了让它不受支持且丑陋,您可以继续尝试直到成功,setInterval
允许重复一个函数:
function setOpportunityRibbonsAppearance() {
var submitToForeCastButton = null;
var interval = setInterval(function(){
submitToForeCastButton = parent.document.getElementById("opportunity|NoRelationship|Form|sfw.opportunity.Button1.Button");
if(submitToForeCastButton != null) {
submitToForeCastButton.style.backgroundColor = "lightyellow";
clearInterval(interval);
}
}, 500); // Every 500ms. Adjust as needed, not too fast or browser will choke.
}
我需要设置表单功能区中其中一个按钮的背景颜色。 Ribbon Workbench 不支持此功能,因此我编写了以下 javascript 来实现相同的目的:
function setOpportunityRibbonsAppearance() {
var submitToForeCastButton = parent.document.getElementById("opportunity|NoRelationship|Form|sfw.opportunity.Button1.Button");
if (submitToForeCastButton != null) {
submitToForeCastButton.style.backgroundColor = "lightyellow";
}
}
我已经在表单加载事件中注册了这个脚本。但是问题是,我总是只将 parent.document.getElementById 设为 null。 令人惊讶的是,我能够在浏览器的控制台中看到控件 while 运行 parent.document.getElementById 语句,并且还可以更改样式属性。
任何人都可以提出这里可能有什么问题吗?
P.S。 - 我知道不建议在 CRM 中使用 document.getElementById,但是,在尝试更改某些按钮的外观时我别无选择。
如有任何帮助,我们将不胜感激。
可能是因为您的脚本 运行 在页面完全加载之前。
尝试为函数添加延迟 Put a Delay in Javascript
您可以上传黄色背景的图标,以确保所有内容均受支持。您不会看到黄色文字,但它可能适合您。简单标准。
为了让它不受支持且丑陋,您可以继续尝试直到成功,setInterval
允许重复一个函数:
function setOpportunityRibbonsAppearance() {
var submitToForeCastButton = null;
var interval = setInterval(function(){
submitToForeCastButton = parent.document.getElementById("opportunity|NoRelationship|Form|sfw.opportunity.Button1.Button");
if(submitToForeCastButton != null) {
submitToForeCastButton.style.backgroundColor = "lightyellow";
clearInterval(interval);
}
}, 500); // Every 500ms. Adjust as needed, not too fast or browser will choke.
}