検索
ホームページウェブフロントエンドjsチュートリアルpostMessage() を使用して、クロスドメイン iframe ページ間の情報転送メソッドを実装する_javascript スキル

Web オリジン ポリシーの制限により、ページでクロスドメイン iframe リンクが使用されている場合、メイン ページとサブページは相互作用できず、ページ間の情報の転送に多くの問題が発生します。一連の試みの結果、最終的にそれを達成する次の方法を見つけました:

1. サブページ URL のパラメータを渡します

簡単に言うと、メイン ページと同じオリジンを持つ URL に渡す必要があるすべてのパラメータを追加し、サブページをその URL にリダイレクトします。その後、メイン ページは src を通じてこれらのパラメータを取得します。 iframe

プロセスは非常に複雑なので、この方法はお勧めできません

2. postMessage()

postMessage() は、HTML5 が提供するイベントベースのメッセージ送信 API であり、クロステキストドキュメント、マルチウィンドウ、クロスドメインメッセージングを実現できます。

postMessage(data,origin) メソッドは 2 つのパラメータを受け入れます

1.data: 渡されるデータ。HTML5 仕様では、このパラメータは JavaScript の任意の基本型またはコピー可能なオブジェクトにできると記載されていますが、一部のブラウザではこれができるわけではありません。パラメータを渡すときに、JSON.stringify() メソッドを使用してオブジェクト パラメータをシリアル化する必要があります。同様の効果は、IE の以前のバージョンで json2.js を参照することによって実現できます。

2.origin: ターゲット ウィンドウのソースを示す文字列パラメータ、プロトコル + ホスト + ポート番号 [+URL]。URL は無視されるため、このパラメータを記述する必要はありません。 postMessage() メソッドのみ メッセージは指定されたウィンドウに渡されます。もちろん、必要に応じてパラメータを「*」に設定することもできます。現在のウィンドウを原点とする場合は、「/」に設定します。

メッセージを送信 (サブページ)

function sendMessage(param) {
  var url;
  if (param.url) {
    url = param.url;
  };
  var dataJson = JSON.stringify({
     type:1,  
    a: param.c,
    b: param.c,
    c: param.c,
    url: url
  });
  window.parent.postMessage(dataJson, '*');
}

一部のブラウザは文字列パラメータのみを処理できるため、最初に JSON.stringfy() を使用してパラメータを文字列に変換し、次に受信ページで JSON.parse() を使用してパラメータを変換する必要があります。オブジェクトに戻ります。

メッセージを受信

サブページによって渡されるパラメーターについては、ウィンドウのメッセージ イベントをリッスンすることで取得できます。

window.addEventListener('message', function(e) {
var data = JSON.parse(e.data);
switch (data.type) {
ケース 1:
アラート(data.a);ブレーク;
}
}, false);

メッセージ イベントにはいくつかの重要な属性があります

1.data: 名前が示すように、
で渡されるメッセージです。 2.source: メッセージを送信するウィンドウオブジェクト
3.origin: メッセージウィンドウのソース (プロトコル + ホスト + ポート番号)
クロスドメインのメッセージ配信は、postMessage() メソッドとメッセージ イベントを通じて実現できます。デモでは、子ページを通じてメッセージを親ページに配信するため、送信とウィンドウへのウィンドウを使用します。受信:

window.parent.postMessage(dataJson, '*'); ホームページからサブページへの場合は、送信に window.frames[0] を使用する必要があります。

上記の記事は、クロスドメイン iframe ページ間の情報転送を実現するために postMessage() を使用しています。これは、エディターが共有したすべての内容です。参考にしていただければ幸いです。スクリプト ホームをサポートしていただければ幸いです。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
微软:每次访问时 Outlook 错误都会下载“TokenFactoryIframe”文件微软:每次访问时 Outlook 错误都会下载“TokenFactoryIframe”文件Apr 19, 2023 am 08:25 AM

当用户通过Safari浏览器访问电子邮件服务时,微软的Outlook正在macOS上下载一个名为“TokenFactoryIframe”的神秘文件。发现Outlook在每次访问时下载的“TokenFactoryIframe”文件的用户现已广泛报告此问题。Outlook每隔几秒或至少在每次访问Apple平台上的Outlook时都会下载此神秘文件。根据我们的调查结果,这似乎是由发布到Outlook的服务器端更新错误引起的问题,与Safari或macOS无关。微软在一份

PHP Session 跨域问题的解决方法PHP Session 跨域问题的解决方法Oct 12, 2023 pm 03:00 PM

PHPSession跨域问题的解决方法在前后端分离的开发中,跨域请求已成为常态。在处理跨域问题时,我们通常会涉及到session的使用和管理。然而,由于浏览器的同源策略限制,跨域情况下默认情况下无法共享session。为了解决这个问题,我们需要采用一些技巧和方法来实现session的跨域共享。一、使用cookie跨域共享session最常

Vue 中如何进行跨域请求?Vue 中如何进行跨域请求?Jun 10, 2023 pm 10:30 PM

Vue是一种流行的JavaScript框架,用于构建现代化的Web应用程序。在使用Vue开发应用程序时,常常需要与不同的API交互,而这些API往往位于不同的服务器上。由于跨域安全策略的限制,当Vue应用程序在一个域名上运行时,它不能直接与另一个域名上的API进行通信。本文将介绍几种在Vue中进行跨域请求的方法。1.使用代理一种常见的跨域解决方案是使用代理

如何使用Flask-CORS实现跨域资源共享如何使用Flask-CORS实现跨域资源共享Aug 02, 2023 pm 02:03 PM

如何使用Flask-CORS实现跨域资源共享引言:在网络应用开发中,跨域资源共享(CrossOriginResourceSharing,简称CORS)是一种机制,允许服务器与指定的来源或域名之间共享资源。使用CORS,我们可以灵活地控制不同域之间的数据传输,实现安全、可靠的跨域访问。在本文中,我们将介绍如何使用Flask-CORS扩展库来实现CORS功

如何在HTML中允许跨域使用图像和画布?如何在HTML中允许跨域使用图像和画布?Aug 30, 2023 pm 04:25 PM

为了允许跨域使用图像和画布,服务器必须在其HTTP响应中包含适当的CORS(跨域资源共享)头。这些头可以设置为允许特定的来源或方法,或者允许任何来源访问资源。HTMLCanvasAnHTML5CanvasisarectangularareaonawebpagethatiscontrolledbyJavaScriptcode.Anythingcanbedrawnonthecanvas,includingimages,shapes,text,andanimations.Thecanvasisagre

Vue技术开发中遇到的跨域问题及解决方法Vue技术开发中遇到的跨域问题及解决方法Oct 08, 2023 pm 09:36 PM

Vue技术开发中遇到的跨域问题及解决方法摘要:本文将介绍在Vue技术开发过程中,可能遇到的跨域问题以及解决方法。我们将从导致跨域的原因开始,然后介绍几种常见的解决方案,并提供具体代码示例。一、跨域问题的原因在Web开发中,由于浏览器的安全策略,浏览器会限制从一个源(域、协议或端口)请求另一个源的资源。这就是所谓的“同源策略”。当我们在Vue技术开发中,前端与

iframe能做什么iframe能做什么Aug 23, 2023 pm 03:50 PM

iframe用途有嵌入其他网页、广告展示、跨域通信、内容分割、安全隔离、框架集成等。详细介绍:1、嵌入其他网页,在一个网页中嵌入另一个网页,通过使用iframe,可以将这些内容无缝地嵌入到网页中;2、广告展示,iframe可以用于显示广告内容;3、跨域通信,由于安全原因,浏览器限制了不同源之间的直接通信,但是通过使用iframe可以在不同源之间进行通信;4、内容分割等等。

什么是layui iframe什么是layui iframeAug 23, 2023 pm 03:55 PM

Layui是一款轻量级的前端UI框架,iframe是HTML中的一个元素,用于在网页中嵌入另一个网页。在Layui框架中,layui iframe是指Layui提供的一种特殊的页面加载方式,用于在当前页面中加载另一个页面。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。