[英]How to manipulate DOM in Dynamics CRM using jQuery
尝试通过使用jQuery的append方法更新字段值来操作DOM。
发现使用普通的javascript或jQuery在Dynamics CRM中不允许DOM操作
因此尝试在源选项卡中添加带有脚本的HTML Web资源:
该函数以项目形式添加,并配置为在OnLoad
事件中调用。 但是,它在表单加载之前被调用。
该功能在console
执行时效果很好,但在系统调用时不起作用。
setTimeout(ShowProjectAge, 3000);
function ShowProjectAge() {
var createdOn = Xrm.Page.getAttribute("createdon");
var createdOnDt = new Date(createdOn.$2_2.$2T_2);
var today = new Date();
var DiffDays = GetDiffDays(createdOnDt, today);
//var projectAge = $('#processDuration').html();
//$('#HeaderTilesWrapperLayoutElement').html(projectAge);
//$('#HeaderTilesWrapperLayoutElement').css('color','black');
console.log('The Project Age is ' + DiffDays);
var div = $('#HeaderTilesWrapperLayoutElement');
div.text('The Project Age is ' + DiffDays + ' days');
div.css('color', 'black');
div.css('font-weight', 'bold');
}
function GetDiffDays(date1, date2) {
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
return Math.round(timeDiff / (1000 * 3600 * 24));
}
在完全加载的DOM上, ShowProjectAge
效果很好 。 但是,当从系统调用时,不会加载它。
已尝试使用document.ready
首先,永远不要在CRM中进行任何DOM操作。 这是不值得的。 曾经
其次,可以使用零代码开箱即用地完成此操作:
第三,这是完全错误的:
var createdOn = Xrm.Page.getAttribute("createdon");
var createdOnDt = new Date(createdOn.$2_2.$2T_2);
您可以这样获得日期:
var createdOnDt = Xrm.Page.getAttribute("createdon").getValue();
根据我对Dynamics CRM DOM的理解,所有JavaScript都位于单独的空白iframe中。
表单元素位于另一个空的iframe中。
请注意,它们都在同一个窗口中,因此请更改以下行:
var div = $('#HeaderTilesWrapperLayoutElement');
对此:
var div = $('#HeaderTilesWrapperLayoutElement', window.parent.document);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.