【问题标题】:CRM Dynamics 2015 IFrame CommunicationCRM Dynamics 2015 IFrame 通信
【发布时间】:2015-11-02 18:15:49
【问题描述】:

我有一个在对话框中调用的网络资源。

似乎在最近的 CRM Dynamics 更新中,他们现在覆盖了 window.frames 对象,我以前用它来获取所有 iframe 的列表。

这是控制台中框架对象的视图..

有谁知道我如何访问页面上可用的 iframe?

以前可以运行的代码...

 var found = false;
 $.each(parent.window.frames, function (i, val) {
        if (!found) {
            if (parent.window.frames[i].Xrm.Page.data != null) {
                console.log("got here, page data not null");
                found = true;
            }
        }
    });

动态版本:7.0.2.53

【问题讨论】:

  • 您确定要这样做吗?它不受支持。最终目标是什么?
  • 目的是从原始 iframe 访问表单上的数据。

标签: javascript iframe dynamics-crm dynamics-crm-2015


【解决方案1】:

您可以尝试使用以下代码获取所有 IFrame 控件:

var iframeControlArray = Xrm.Page.getControl(function (control, index) { 
    return control.getControlType() == "iframe"; 
});

然后访问 IFrame DOM 对象:

var iframeDomObject = iframeControlArray[0].getObject();
var iframeDocument = iframeDomObject.contentDocument  
        || iframeDomObject.contentWindow.document; 

如果另一个域中的 IFrame 资源并且您可以完全访问它,最好使用window.postMessage() 进行“跨域 IFrame 通信”。 更多信息在这里:

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2015-09-24
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多