Javascript 如何从CRM 2016表单上的另一个html webresource访问webresource控件?
在我的客户表单中有两个HTMLWebResources,一个包含multitab,第二个包含一些tile,它们是使用bootstrap和JQuery for events设计的。要在单击第二个webresource上存在的磁贴时启动第一个webresource上存在的tab的单击事件 我已经在简单的html页面上准备好了脚本,所有的代码都在那里工作,但不是在crm表单上Javascript 如何从CRM 2016表单上的另一个html webresource访问webresource控件?,javascript,jquery,html,dynamics-crm,dynamics-crm-2016,Javascript,Jquery,Html,Dynamics Crm,Dynamics Crm 2016,在我的客户表单中有两个HTMLWebResources,一个包含multitab,第二个包含一些tile,它们是使用bootstrap和JQuery for events设计的。要在单击第二个webresource上存在的磁贴时启动第一个webresource上存在的tab的单击事件 我已经在简单的html页面上准备好了脚本,所有的代码都在那里工作,但不是在crm表单上 如何从第一个webresource使用JQuery访问选项卡控件 我已经在每个HTMLWebResources上编写了一些脚本
//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>
//html
//剧本
//以下脚本在同一页上运行良好
$(“ul.nav选项卡”)。在(“单击”、“li”功能上(){
var selectedTabText=($(this.find(“a”).text());
var tabs=window.parent.Xrm.Page.ui.tabs;
//一些切换脚本
});
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>
//html
未决案件
//剧本
$(“.panel”)。在(“单击”,“div”,函数(){
//以下内容不适用于crm表单
$(“#tab_cases”).addClass('active');
$(“#tab_cases”).parent().sides().removeClass('active');//长度0,id未检测到
//window.parent.$(“#tab_cases”).parent().sides().removeClass('active');
/*在li上触发单击事件*/
//尝试使用webresource_1脚本上编写的函数
$(“#tab_cases”)。最近的(“ul.nav-tabs li”)。触发('click');/*不触发*
});
虽然从技术上讲,由于您都在CRM中,并且不会出现任何跨域脚本问题,这可能有点过分,但您可以使用来自Frame1的消息与CRM表单通信,然后让它与Frame2通信。这也意味着您的脚本不必依赖于彼此的DOM,而是可以订阅相同的界面来发布/接收消息。建议使用Xrm.Page.getControl(arg).getObject()
,它将返回您的WebResource的各个IFRAME。(我还没试过)是的。。。你是对的,我可以看到..找到对象后如何进一步访问?我可以使用以下脚本查看对象:window.parent.Xrm.Page.getControl(“WebResource_选项卡”).getObject();正如我所说,我没有亲自尝试过,但从那时起,您应该能够访问DOM。最好的方法是使用调试器检查getObject()
的结果。