フォーム上で IFRAME および Web リソース コントロールを使用する
公開日: 2017年1月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
IFRAME と Web リソースは、HTML IFRAME 要素を使用して、ページ内に他のページから埋め込まれたコンテンツを制御します。
注意
フォーム用に選択したデザインは、タブレット PC 用 Microsoft Dynamics 365 に使用された Outlook 用 Microsoft Dynamics 365 閲覧ウィンドウおよび読み取り最適化フォームにも使用されます。 Web リソースと IFRAMEs は、Outlook 用 Dynamics 365 閲覧ウィンドウ使用時に表示されませんが、タブレット PC 用 Dynamics 365 でサポートされています。IFRAME がページの Xrm.Page オブジェクトやフォーム イベント ハンドラーへのアクセスに依存する場合は、IFRAME を既定で表示しないように構成してください。
ASP.NET ページなど、別の Web サイトのコンテンツをフォームに表示するには、IFRAME を使用します。 別のエンティティ フォームに埋め込まれた IFrame 内のエンティティ フォームを表示することはサポートされていません。
Web リソースのコンテンツをフォームに表示するには、次のいずれかの Web リソースを使用できます。
注意
Silverlight は下位互換性のみを目的として組み込まれており、お勧めしません。詳細:Silverlight (XAP) の Web リソース
以降のセクションでは、これらのコントロールで静的コンテンツ以外も表示させるために使用するオプションについて説明します。
このトピックの内容
クロスフレーム スクリプトを制限するかどうかを選択する
レコードに関するコンテキスト情報を渡す
フォーム データを渡す
URL を変更する
クロスフレーム スクリプトを制限するかどうかを選択する
IFRAME で表示されるコンテンツを完全には信頼しない場合は、[サポートされている場合はクロスフレーム スクリプトを制限します] オプションを使用します。 このオプションを選択すると、次の表に示す属性が IFRAME で設定されます。
属性 |
説明 |
---|---|
security=”restricted” |
この属性は、バージョン 6 以降の Internet Explorer のバージョンでのみサポートされます。 この security 属性により、ユーザーの [制限付きサイト] のセキュリティ設定が IFRAME のソース ファイルに適用されます (ゾーンの設定は [インターネット オプション] ダイアログ ボックスの [セキュリティ] タブにあります)。 規定では、制限付きサイト ゾーンでは、スクリプトは無効になっています。 ゾーンのセキュリティ設定を変更すると、スクリプトの実行が許可されるなど、さまざまな悪い結果を招くことがあります。 詳細については、「security 属性」を参照してください。 |
sandbox=”” |
この属性をサポートするブラウザーで、IFRAME のコンテンツが基本的に情報の表示だけに制限されます。 次の制限が適用されます。
これは W3C が定義した属性で、次のブラウザーでサポートされます。
属性の詳細については、以下を参照してください。 |
ドメイン間での IFRAME 通信の有効化
異なるドメインにコンテンツを含むIFRAMEの通信を有効化する場合があります。Window.postMessage は、Internet Explorer 8以降のInternet Explorerのバージョンでこの機能を提供するブラウザー メソッドです。Google Chrome、Mozilla Firefox と Apple Safari でもサポートされます。postMessage の使用方法の詳細については、次のブログ記事を参照してください。
レコードに関するコンテキスト情報を渡す
コントロール内で定義される URL にパラメーターを渡すことで、コンテキスト情報を提供できます。 フレームに表示されるページは、渡されるパラメーターを処理できる必要があります。IFRAME または Web リソースが、[パラメーターとして、レコードのオブジェクトの種類コードおよび一意の識別子を渡します。] オプションを使用して構成されている場合は、次の表のすべてのパラメーターが渡されます。 対応するフォーム XML 要素は、<PassParameters> (FormXml) です。
次の表のすべてのパラメーターが渡されるかどうかを指定できます。
パラメーター |
名前 |
説明 |
---|---|---|
typename |
エンティティ名 |
エンティティの名前。 |
type |
エンティティの種類コード |
特定の組織内のエンティティを一意に識別する整数です。 |
id |
オブジェクトの GUID |
レコードを表す GUID です。 |
orgname |
組織名 |
組織の一意の名前です。 |
userlcid |
ユーザー言語コード |
現在のユーザーが使用している言語コードの識別子です。 |
orglcid |
組織言語コード |
組織の基本言語を表す言語コードの識別子です。 |
言語コードは 4 桁または 5 桁のロケール ID です。 有効なロケール ID 値については、「Locale ID (LCID) Chart (ロケール ID (LCID) の一覧)」で確認することができます。
注意
Microsoft Dynamics 365 組織ごとに、ユーザー定義エンティティの種類コードは異なる可能性があるため、種類コードではなくエンティティ名を使用することをお勧めします。
例
次のサンプルは、パラメーターのない URL の表示方法を示しています。
http://myserver/mypage.aspx
次のサンプルは、パラメーターのない URL の表示方法を示しています。
http://myserver/mypage.aspx?id=%7bB2232821-A775-DF11-8DD1-00155DBA3809%7d&orglcid=1033&orgname=adventureworkscycle&type=1&typename=account&userlcid=1033
渡されたパラメーターを読み取る
通常、渡されたパラメーターは、ターゲットの .aspx ページで HttpRequest.QueryString プロパティを使用して読み取られます。HTML ページでは、JavaScript で window.location.search プロパティを使用してパラメーターにアクセスできます。 詳細については、「HttpRequest.QueryString プロパティ」および「検索文字」を参照してください。
フォーム データを渡す
他の Web サイトに渡すデータが格納されている属性で getValue メソッドを使用し、他のページが使用できるクエリ文字列引数の文字列を構成します。 次に、フィールド OnChange イベント、IFRAME OnReadyStateComplete イベント、または タブ TabStateChange イベント、および setSrc メソッドを使用して、IFRAME または Web リソースの src プロパティにパラメーターを追加します。
データを Silverlight Web リソースに渡すのにデータ パラメーターを使用している場合は、データ パラメーターを通じて渡される値を、getData メソッドと setData メソッドを使用して操作できます。 Web ページ (HTML) の Web リソースの場合は、setSrc メソッドを使用して querystring パラメーターを直接操作します。
OnLoad イベントは使用しないでください。IFRAMES と Web リソースは非同期に読み込みを行うため、Onload イベント スクリプトが終了する前に、フレームの読み込みが終了しないことがあります。 この場合、変更した IFRAME または Web リソースの src プロパティが、IFRAME または Web リソースの URL プロパティの既定値で上書きされる可能性があります。
URL を変更する
フォーム内のデータや、ユーザーがオフラインかどうかなどの考慮事項に応じて、IFRAME のターゲットを変更すると有効な場合があります。IFRAME のターゲットは動的に設定できます。
注意
IFRAME のターゲット ページを変更しても、パラメーターは新しい URL に自動的には渡されません。setSrc メソッドを使用する前に、クエリ文字列のパラメーターを URL に追加する必要があります。
例
次のサンプルで、オプション セット フィールドの onChange イベントを使用して、IFRAME の src プロパティおよび任意のパラメーターを設定する方法を示します。
//Get the value of an option set attribute
var value = Xrm.Page.data.entity.attributes.get("new_pagechooser").getValue();
var newTarget = "";
//Set the target based on the value of the option set
switch (value) {
case 100000001:
newTarget = "http://myServer/test/pageOne.aspx";
break;
default:
newTarget = "http://myServer/test/pageTwo.aspx";
break;
}
//Get the default URL for the IFRAME, which includes the
// query string parameters
var IFrame = Xrm.Page.ui.controls.get("IFRAME_test");
var Url = IFrame.getSrc();
// Capture the parameters
var params = Url.substr(Url.indexOf("?"));
//Append the parameters to the new page URL
newTarget = newTarget + params;
// Use the setSrc method so that the IFRAME uses the
// new page with the existing parameters
IFrame.setSrc(newTarget);
関連項目
Microsoft Dynamics 365 フォームのコードを記述する
Microsoft Dynamics 365 での JavaScript の使用
フォーム スクリプトの簡易参照
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 著作権