4

CRM の javascript から iframe 内の html コントロールにアクセスするにはどうすればよいですか?

私は持っている:

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

しかし、その結果、「ページ上のエラー」が発生し、コンテンツが読み込まれません。

アクセスしたい要素は、「txt」のIDを持つ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;
  }
}

編集:

これにより、Web リソースにアクセスできます。

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 に答える