[英]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.