4

如何从 CRM 中的 javascript 访问 iframe 中的 html 控件?

我有:

 var height = document.getElementById("IFRAME_TransactionProduct_RA").contentWindow.document.getElementById("txt").value;

但这会导致“页面错误”并且内容未加载。

我要访问的元素是 id 为“txt”的 html 输入:

 <input id="txt" type="hidden" />
4

2 回答 2

4

下面是如何将值从 CRM 字段复制到 IFRAME 中嵌入的 HTML 控件中的控件的示例。我假设 Web 资源和字段的名称。你必须适应这些。如果 CRM 抛出异常,您也可能会抛出一个try-catch(开了个玩笑?),请注意我是在手机上输入代码,所以某处可能有错字(自动更正,是的)。

var source = Xrm.Page.data.entity.attributes.get("oneCoolField")
var information = source.getValue();

var customHtml = Xrm.Page.ui.controls.get("WebResource_EmbeddedHtmlContent");
var destination = customHtml.getObject().contentWindow.document;
if(destination) {
  var customControl = destination.getElementById("elementToAccess");
  if(customControl) {
    customControl.value = information;
  }
}

编辑:

这使您可以访问网络资源。

var customHtml = Xrm.Page.ui.controls.get("WebResource_EmbeddedHtmlContent");

这将带您进入 IFRAME 的 DOM。

var destination = customHtml.getObject().contentWindow.document;

这将使您进入自定义页面上的控件。

var customControl = destination.getElementById("elementToAccess");

这将为您提供控件的内容。

var contents = customControl.innerHTML;

您的计算机上哪个部分出现故障?

于 2013-03-21T05:50:39.843 回答
1

使用 jQuery:

$(Xrm.Page.ui.controls.get('IFRAME_TransactionProduct_RA').getObject()).contents().find('#txt').val();

纯JS:

Xrm.Page.ui.controls.get('IFRAME_TransactionProduct_RA').getObject().contentWindow.document.getElementById('txt').value;

http://msdn.microsoft.com/en-us/library/gg334266.aspx#BKMK_getObject

于 2014-09-29T09:04:04.227 回答