如何从CRM 2016表单上的另一个html webresource访问webresource控件?

时间:2017-01-13 11:30:54

标签: javascript jquery html dynamics-crm dynamics-crm-2016

我的客户表单中有两个html webresources,一个包含一个multitab,另一个包含一些tile,使用bootstrap和JQuery设计事件。想要在第二个webresource上存在点击图块的第一个webresource上发起一个Click事件。

我已经在简单的html页面上编写了脚本,首先所有代码都在那里工作,但不是在crm表单上。

  1. 如何从第一个webresource使用JQuery访问选项卡控件?
  2. 我在每个html webresources上编写了一些脚本,我可以使用另一个html webresource中的相同脚本/函数吗?
  3. Webresource_1

      //html
    
        <div class="row">     
             <ul id="tab_container_01" class="nav nav-tabs">
             <li id="tab_cases"><a id="ahref_cases" href="#">Cases</a></li>
             </ul>
        </div>
        //script
        //Following script is working fine on the same page
        <script type="text/javascript">
        $("ul.nav-tabs").on("click", "li", function () {
            var selectedTabText = ($(this).find("a").text());
            var tabs = window.parent.Xrm.Page.ui.tabs;
            //Some toggle script
        });
    
    </script>
    

    Webresource_2

    //html
    
    <div class="panel">           
        <div> Open Cases </div>
    </div>
    
    //script
    <script type="text/javascript">
    $(".panel").on("click", "div", function () {
    
    // following not working on crm form
    $("#tab_cases").addClass('active');
    $("#tab_cases").parent().siblings().removeClass('active'); //length 0, id not detecting
    
    //window.parent.$("#tab_cases").parent().siblings().removeClass('active');
    
    /* trigger click event on the li */
    //trying to use function written on webresource_1 script
    
    $("#tab_cases").closest("ul.nav-tabs li").trigger('click'); //*Not Triggering*
    });
    </script>
    

1 个答案:

答案 0 :(得分:0)

虽然从技术上讲,既然你都在CRM中,而且你不会遇到任何跨域脚本问题,这可能有点过时,你可以使用来自Frame1的Window.Post消息来与CRM进行通信表单,然后让它与第2帧通信。这也意味着你的脚本不必依赖于每个的DOM,其他订阅相同的接口来发布/接收消息。