如何在Dynamics CRM 2016中检查是否加载了Web资源控件

庞玛

必须从另一个webresoucre控件访问Webresource控件。使用以下javascript,

  var webResource = $(window.parent.Xrm.Page.getControl(webResourceName).getObject().contentWindow.window.document.getElementById(dropDownName));

但是有时它可以正常工作,有时它返回空值。

因此,可以检查webresource是否已加载。

Polshgiant

您有很多选择。

有您的网络资源触发代码

我最喜欢的方法是朝另一个方向发展:在您的Web资源中,添加代码以开始在父CRM窗体上执行。您可以使用jQuery的ready方法,或者可以在不涉及jQuery的SO上阅读的许多方法之一。如果您使用的是jQuery,则您的网络资源可能具有以下内容:

$.ready(function() {
    window.parent.Xrm.Page.getAttribute('name').setValue('test'); // or whatever your webresource needs to do
});

这个想法是,Web资源准备就绪时会触发一些逻辑,这样您就可以避免必须检测Web资源何时完成加载的麻烦。

使用jQuery的load方法

我不记得我是否实际尝试过,但是您应该可以使用jQuery的load方法。在CRM表单上的脚本中,执行以下操作:

$('iframe#WebResource_xyz').on('load', function() {
    // Here, the 'this' object will refer to the iframe object

    this.contentWindow.document.getElementById(dropDownName); // you might have to tweak this slightly, didn't test it
});

检测Web资源准备就绪的时间

这种方法可以满足您的要求,并且是我在开箱即用的表单上使用jQuery之前曾经使用的方法(包括将来可能使用较旧版本的CRM(无法使用jQuery)的读者)。它等待webresource完成加载,然后调用回调。将此函数添加到CRM表单上加载的脚本中:

// Waits for web resource to be ready and then invokes the callback.
// webResourceId: the id of either a web resource or an iframe on the form
// urlCheck: this string will be checked for in the iframe's url to make 
//           sure it is on the right page. can be any part of the url, 
//           doesn't have to be the whole thing.
// callback: Called once the iframe is ready. The context of the callback 
//           method will be set to the iframe's window, so the callback can 
//           use "this" to refer to the iframe window.
function waitForWebResourceReady(webResourceId, urlCheck, callback) {
    var tryCount = arguments[3] || 0;
    var control = Xrm.Page.getControl(webResourceId);

    if (!control ||
        !control.getObject() ||
        !control.getObject().contentWindow ||
        !control.getObject().contentWindow.location ||
        !control.getObject().contentWindow.location.href ||
        control.getObject().contentWindow.location.href.indexOf(urlCheck) < 0 ||
        control.getObject().readyState !== 'complete') {
        if (tryCount > 50) {
            console.log("waitForWebResourceReady: " + 
                "Failed to reach ready state on " + webResourceId);
            return;
        }

        console.log("waitForWebResourceReady: " + webResourceId + " not ready yet");
        window.setTimeout(function () {
            waitForWebResourceReady(webResourceId, urlCheck, callback, ++tryCount);
        }, 20);
        return;
    }

    console.log("waitForWebResourceReady: " + webResourceId + " is ready");
    callback.call(control.getObject().contentWindow);
}

然后像这样使用它:

waitForWebResourceReady('WebResource_xyz', 'mycontrol.html', function () {
    // In this context, 'this' will refer to the window object of the webresource
    var dropdown = this.document.getElementById(dropDownName);
    // ....
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在CRM Dynamics中显示网页/网络资源?

来自分类Dev

如何在Dynamics CRM 2011中获取每个帐户的活动?

来自分类Dev

如何在Dynamics CRM中获取流程完成按钮事件?

来自分类Dev

如何在Dynamics CRM中创建站点地图?

来自分类Dev

如何在Dynamics CRM中操作HTML-Webresource

来自分类Dev

如何在MS Dynamics CRM Online中单击按钮重定向到任何Web资源?

来自分类Dev

如何在Dynamics CRM 2016中使用DiscoveryService获取实体中的项目列表?

来自分类Dev

如何在 Dynamics crm 2016 中克隆记录(服务器端)?

来自分类Dev

如何在Microsoft Dynamics CRM 2016中提取活动或非活动帐户?

来自分类Dev

如何在 Dynamics CRM 2016 中禁用基于表单的功能区按钮?

来自分类Dev

在Dynamics CRM中,如何更新CreatedOn日期?

来自分类Dev

我们如何在JS中识别Dynamics CRM Web API版本?

来自分类Dev

如何使用JavaScript获取Dynamics CRM Web资源名称

来自分类Dev

如何在 CRM Dynamics 中为自定义操作传递“目标”参数

来自分类Dev

如何在Dynamics CRM 2013中为实体记录存储多个图像?

来自分类Dev

如何在Dynamics CRM 2015中进行列级加密?

来自分类Dev

如何在Microsoft Dynamics CRM 2015中创建供应商?

来自分类Dev

如何在 MS Dynamics CRM 中创建操作和呼叫操作?

来自分类Dev

如何在Dynamics CRM中的时区开始和结束夏令时?

来自分类Dev

如何在Microsoft Dynamics CRM 2011中使用jquery和webresource?

来自分类Dev

如何在MS Dynamics CRM中查找/查询Reporting Services SQL数据库

来自分类Dev

如何在Dynamics CRM VOC中获得调查实体和响应路由之间的关系?

来自分类Dev

如何在 Dynamics CRM 365 中为“CallFrom”和“CallTo”创建电话活动记录

来自分类Dev

如何在Microsoft Dynamics CRM 2011中实现字段级安全

来自分类Dev

如何在Microsoft Dynamics CRM 2013中正确嵌入iframe

来自分类Dev

如何在Dynamics CRM中删除已完成的批量删除系统作业

来自分类Dev

如何在 Dynamics CRM 2016 v8.2 中使用 javascript 在运行时检查用户权限?

来自分类Dev

如何从Web App(节点/ Express)查询本地Dynamics CRM

来自分类Dev

在Dynamics CRM中调用create之前,如何删除重复项?

Related 相关文章

  1. 1

    如何在CRM Dynamics中显示网页/网络资源?

  2. 2

    如何在Dynamics CRM 2011中获取每个帐户的活动?

  3. 3

    如何在Dynamics CRM中获取流程完成按钮事件?

  4. 4

    如何在Dynamics CRM中创建站点地图?

  5. 5

    如何在Dynamics CRM中操作HTML-Webresource

  6. 6

    如何在MS Dynamics CRM Online中单击按钮重定向到任何Web资源?

  7. 7

    如何在Dynamics CRM 2016中使用DiscoveryService获取实体中的项目列表?

  8. 8

    如何在 Dynamics crm 2016 中克隆记录(服务器端)?

  9. 9

    如何在Microsoft Dynamics CRM 2016中提取活动或非活动帐户?

  10. 10

    如何在 Dynamics CRM 2016 中禁用基于表单的功能区按钮?

  11. 11

    在Dynamics CRM中,如何更新CreatedOn日期?

  12. 12

    我们如何在JS中识别Dynamics CRM Web API版本?

  13. 13

    如何使用JavaScript获取Dynamics CRM Web资源名称

  14. 14

    如何在 CRM Dynamics 中为自定义操作传递“目标”参数

  15. 15

    如何在Dynamics CRM 2013中为实体记录存储多个图像?

  16. 16

    如何在Dynamics CRM 2015中进行列级加密?

  17. 17

    如何在Microsoft Dynamics CRM 2015中创建供应商?

  18. 18

    如何在 MS Dynamics CRM 中创建操作和呼叫操作?

  19. 19

    如何在Dynamics CRM中的时区开始和结束夏令时?

  20. 20

    如何在Microsoft Dynamics CRM 2011中使用jquery和webresource?

  21. 21

    如何在MS Dynamics CRM中查找/查询Reporting Services SQL数据库

  22. 22

    如何在Dynamics CRM VOC中获得调查实体和响应路由之间的关系?

  23. 23

    如何在 Dynamics CRM 365 中为“CallFrom”和“CallTo”创建电话活动记录

  24. 24

    如何在Microsoft Dynamics CRM 2011中实现字段级安全

  25. 25

    如何在Microsoft Dynamics CRM 2013中正确嵌入iframe

  26. 26

    如何在Dynamics CRM中删除已完成的批量删除系统作业

  27. 27

    如何在 Dynamics CRM 2016 v8.2 中使用 javascript 在运行时检查用户权限?

  28. 28

    如何从Web App(节点/ Express)查询本地Dynamics CRM

  29. 29

    在Dynamics CRM中调用create之前,如何删除重复项?

热门标签

归档