次の方法で共有


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

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

フォームに選択したデザインは、Dynamics 365 for Outlook の閲覧ウィンドウと Dynamics 365 for tablets で使用されるフォームにも使用されます。 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 リソースを使用できます。

Silverlight は下位互換性のためだけに含まれているため、お勧めしません。 詳細:Silverlight (XAP) Web リソース

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

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

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

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

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

この属性は W3C によって定義され、次のブラウザーでサポートされています。

- Internet Explorer 10、Internet Explorer 11、および Microsoft Edge
- グーグルクローム
- アップルサファリ
- Mozilla Firefox

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

- HTML5サンドボックスでサイトを保護する方法
- サンドボックス

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

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

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

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

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

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

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

ユーザー定義エンティティのエンティティ型コードは 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 イベントIFRAME OnReadyStateComplete イベント、または Tab TabStateChange イベント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);

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

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

こちらもご覧ください

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