この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

iframe を使用した信頼されないサードパーティコンテンツの参照

信頼されない供給元からダウンロードした静的リソースは分離することをお勧めします。iframe を使用してサードパーティコンテンツを Visualforce ページから切り離すことで、セキュリティを強化し、アセットを保護できます。

別個のドメインの静的 HTML ファイルを参照するには、差し込み項目として $IFrameResource.<resource_name> を使用します。このとき、resource_name は、リソースをアップロードしたときに指定した名前です。次に例を示します。

1<apex:iframe src="{!$IFrameResource.TestHtml}" id ="theiframe" width="500" height="500"/>

iframe タグは JavaScript を親ドキュメントと子 iframe の両方に挿入し、その 2 つの要素間で安全な通信が確立されます。親ドキュメントは、複数の iframe を持つことができます。一意の名前が付けられた各静的リソースは、forceusercontent.com の独自のサブドメインに存在します。

iframe へのアクセスは認証されないため、iframe に含まれるサードパーティコンテンツはユーザのセッション ID にアクセスできません。

親ドキュメントでの iframe との通信

親ドキュメントで JavaScript コードを記述して iframe と通信することができます。

  • theiframe にメッセージを送信する場合
    1SfdcApp.iframe.sendMessage('theiframe', {
    2    key1: value1, 
    3    key2: value2
    4});
  • theiframe からメッセージを受信する場合
    1SfdcApp.iframe.addMessageHandler('theiframe', function(data) {
    2    if(data.key1) {
    3
    4    }
    5});
  • theiframe からのエラーをキャッチする場合
    1SfdcApp.iframe.addErrorHandler('theiframe', function(error) {
    2    console.log(error);
    3});

iframe での親ドキュメントとの通信

反対に、iframe ドキュメントから通信を行うこともできます。

  • 親ドキュメントにメッセージを送信する場合
    1LCC.onlineSupport.sendMessage('containerUserMessage', {
    2    key1: value1, 
    3    key2: value2
    4});
  • 親ドキュメントからメッセージを受信するハンドラを設定する場合
    1LCC.onlineSupport.addMessageHandler(function(message) {
    2    if(data.key1) {
    3
    4    }
    5});

    このハンドラを削除する場合

    1LCC.onlineSupport.removeMessageHandler(function)
  • 親ドキュメントからのメッセージエラーのハンドラを設定する場合
    1LCC.onlineSupport.addMessageErrorHandler(function(message) {
    2    if(data.key1) {
    3
    4    }
    5});

    このハンドラを削除する場合

    1LCC.onlineSupport.removeMessageErrorHandler(function)
  • その他の種類のエラーのハンドラを設定する場合
    1LCC.onlineSupport.addErrorHandler(function(message) {
    2    if(data.key1) {
    3
    4    }
    5});

    このハンドラを削除する場合

    1LCC.onlineSupport.removeErrorHandler(function)