次の方法で共有


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

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

Note

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

認証境界の背後にあるコンテンツの IFRAME 化は、Web リソースや Power Apps Component Framework ではサポートされていません。 一部の埋め込み IFRAME は、ユーザーが外部サービスに直接ログインする場合、ブラウザ クライアントで動作する場合がありますが、モバイルやタブレットのアプリケーションではサポートされていません。 IFRAME 内にエンティティ フォームを埋め込み、他のエンティティ フォームに埋め込むというシナリオはサポートされていません。

ASP.NET ページなど、別の Web サイトのコンテンツをフォームに表示するには、IFRAME を使用します。 別のエンティティ フォームに埋め込まれた IFrame 内のエンティティ フォームの表示はサポートされていません。

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

Note

Silverlight は下位互換性のみを目的として組み込まれており、お勧めしません。 詳細 : Silverlight (XAP) Web リソース

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

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

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

属性 説明
security="restricted" この属性は、バージョン 6 以降の Internet Explorer のバージョンでのみサポートされます。 この security 属性により、ユーザーの [制限付きサイト] のセキュリティ設定が IFRAME のソース ファイルに適用されます (ゾーンの設定は インターネット オプション ダイアログ ボックスの セキュリティ タブにあります)。規定では、制限付きサイト ゾーンでは、スクリプトは無効になっています。 ゾーンのセキュリティ設定を変更すると、スクリプトの実行が許可されるなど、さまざまな悪い結果を招くことがあります。 詳細については、「security 属性」を参照してください。
sandbox="" この属性をサポートするブラウザーで、IFRAME のコンテンツが基本的に情報の表示だけに制限されます。 次の制限が適用されます。

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

これは W3C が定義した属性で、次のブラウザーでサポートされます。

- Internet Explorer 10、Internet Explorer 11、Microsoft Edge
- Google Chrome
- Apple Safari
- Mozilla Firefox

属性の詳細については、以下を参照してください。

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

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

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

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

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

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

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

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

Note

Dynamics 365 Customer Engagement (on-premises) 組織ごとに、ユーザー定義エンティティの種類コードは異なる可能性があるため、種類コードではなくエンティティ名を使用することをお勧めします。

次のサンプルは、パラメーターのない 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 メソッドを使用し、他のページが使用できるクエリ文字列引数の文字列を構成します。 次に、Field OnChange Event, IFRAME OnReadyStateComplete Event、または Tab TabStateChange Event 、および setSrc メソッドを使用して、IFRAME または Web リソースの src プロパティにパラメーターを追加します。

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

OnLoad Event は使用しないでください。 IFRAME と Web リソースは非同期に読み込みを行うため、Onload イベント スクリプトが終了する前に、フレームの読み込みが終了しないことがあります。 この場合、変更した IFRAME または Web リソースの src プロパティが、IFRAME または Web リソースの URL プロパティの既定値で上書きされる可能性があります。

URL を変更する

フォーム内のデータや、ユーザーがオフラインかどうかなどの考慮事項に応じて、IFRAME のターゲットを変更すると有効な場合があります。 IFRAME のターゲットは動的に設定できます。

Note

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);

従来の Web クライアントと統一インターフェイスのレイアウトの違い

特定の数の行を使用するように構成された Web リソース コントロールは、従来の Web クライアント アプリケーションと比較して、統一インターフェイス アプリケーションで異なる高さになります。 これは、統一インターフェイスとレガシ Web クライアントの間で行の高さに違いがあるためです。 レガシ Web クライアントと統一インターフェイスの両方でフォームが必要な場合は、統一インターフェイス アプリとレガシ Web クライアント アプリで異なるフォームを使用し、各フォームで適切な行数を使用するようにコントロールを構成できます。

関連項目

JavaScript を使用した Customer Engagement のクライアント スクリプト
Customer Engagement での JavaScript の使用