フォーム上で IFRAME および Web リソース コントロールを使用する

IFRAME および Web リソース コントロールでは、HTML IFRAME 要素を使用して、ページ内に別の場所からコンテンツを埋め込みます。

注意

フォーム用に選択したデザインは、Dynamics 365 for Outlook の閲覧ウィンドウおよびタブレット PC 用 Dynamics 365 で使用されるフォームにも使用されます。 Web リソースと IFRAME は、Dynamics 365 for Outlook 閲覧ウィンドウ使用時に表示されませんが、タブレット PC 用 Dynamics 365 でサポートされています。 IFRAME がページの Xrm オブジェクトやフォーム イベント ハンドラーへのアクセスに依存する場合は、IFRAME を既定で表示しないように構成してください。

ASP.NET ページなど、別の Web サイトのコンテンツをフォームに表示するには、IFRAME を使用します。

ユーザーが操作するコンテンツをウェブリソースで表示することを検討している場合は、Power Apps Component Frameworkのコンポーネントを使用することをお勧めします。

別のフォームに埋め込まれた IFrame 内のフォームの表示は、サポートされていません。

Web リソースのコンテンツをフォームに表示するには、次のいずれかの Web リソースを使用できます。

以降のセクションでは、これらのコントロールで静的コンテンツ以外も表示させるために使用するオプションについて説明します。

クロスフレーム スクリプトを制限するかどうかを選択する

IFRAME で表示されるコンテンツを完全には信頼しない場合は、サポートされている場合はクロスフレーム スクリプトを制限するオプションを使用します。 このオプションを選択すると、次の表に示すパラメーターが IFRAME で設定されます。

パラメーター 説明
security="restricted" このパラメーターのサポートは終了しました。
sandbox="" このパラメーターをサポートするブラウザーで、IFRAME のコンテンツが基本的に情報の表示だけに制限されます。 次の制限が適用されます。

- ブラウザーのプラグインが無効になります。
- フォームとスクリプトが無効になります。
- 他の参照コンテキストへのリンクが無効になります。
- 同じドメインのコンテンツの場合でも別のドメインのコンテンツとして扱われます。

このパラメーターは W3C によって定義され、次のブラウザーでサポートされています:

- Microsoft Edge
- Google Chrome
- Apple Safari
- Mozilla Firefox

サンドボックス パラメーターの詳細については、以下を参照してください:

- HTML5 Sandbox を使用してサイトを保護する方法
- サンドボックス

ドメイン間での IFRAME 通信の有効化

異なるドメインにコンテンツを含む IFRAME の通信を有効化する場合があります。 Window.postMessage はこの機能を、Google Chrome、Mozilla Firefox、Apple Safari に提供するブラウザー メソッドです。 postMessage の使用方法の詳細については、次のブログ記事を参照してください。

レコードに関するコンテキスト情報を渡す

コントロール内で定義される URL にパラメーターを渡すことで、コンテキスト情報を提供できます。 フレームに表示されるページは、渡されるパラメーターを処理できる必要があります。 IFRAME または Web リソースが、パラメーターとして、レコードのオブジェクトの種類コードおよび一意の識別子を渡します。 オプションを使用して構成されている場合は、次の表のすべてのパラメーターが渡されます。

次の表のすべてのパラメーターが渡されるかどうかを指定できます。

パラメーター 件名 内容
typename テーブル名 テーブルの名前です。
type テーブルの種類コード 特定の組織内のテーブル を一意に識別する整数。
id オブジェクトの GUID レコードを表す GUID です。
orgname 組織名 組織の一意の名前です。
userlcid ユーザー言語コード 現在のユーザーが使用している言語コードの識別子です。

言語コードは 4 桁または 5 桁のロケール ID です。 有効なロケール ID 値は、ロケール ID (LCID) の一覧のページで確認できます。

注意

Microsoft Dataverse 組織ごとに、カスタム テーブルのテーブル種類コードは異なる可能性があるため、種類コードではなくテーブル名を使用することをお勧めします。

次のサンプルは、パラメーターのない URL の表示方法を示しています。

https://myserver/mypage.aspx  

次のサンプルは、パラメーターのない URL の表示方法を示しています。

https://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 event、または Tab TabStateChange event、および setSrc メソッドを使用して、IFRAME または Web リソースの src プロパティにパラメーターを追加します。

Silverlight Web リソースにデータを渡すために data パラメーターを使用している場合は、getData および setData メソッドを使用して data パラメーターを通じて渡される値を操作できます。 Web ページ (HTML) の Web リソースの場合は、setSrc メソッドを使用して querystring パラメーターを直接操作します。

OnLoad イベント は使用しないでください。 IFRAME と 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 formContext = executionContext.getFormContext();
var value = formContext.getAttribute("new_pagechooser").getValue();  
var newTarget = "";  
//Set the target based on the value of the option set  
switch (value) {  
    case 100000001:  
        newTarget = https://myServer/test/pageOne.aspx;  
        break;  
    default:  
        newTarget = https://myServer/test/pageTwo.aspx;  
        break;  
}  
//Get the default URL for the IFRAME, which includes the   
// query string parameters  
var IFrame = formContext.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);

関連項目

JavaScript を使用したクライアント スクリプト

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。