簡體   English   中英

如何使用jQuery在Dynamics CRM中操作DOM

[英]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操作。 這是不值得的。 曾經

其次,可以使用零代碼開箱即用地完成此操作:

  1. 創建自定義計算字段
  2. 使用以下公式:DiffInDays(createdon,Now())
  3. 將該字段放在表單上您想要的任何位置

第三,這是完全錯誤的:

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);

您有兩個選擇,首先可以打開“舊版表單呈現” 或者打開舊式呈現,或者必須重構代碼並習慣於受支持的方法鏈接到文檔

但我在想,您不能使用Xrm.Page在CSS中更改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM