検索
ホームページウェブフロントエンドH5 チュートリアルHTML5 ウィンドウ/iframe クロスドメイン メッセージング API の概要_html5 チュートリアルのスキル

元のアドレス: HTML5 の window.postMessage API
オンライン例: HTML5 の window.postMessage の使用(ログを表示するにはコンソールを開いてください)

I window.postMessage をカプセル化する MooTools プラグイン「PostMessager」を作成しました。ここをクリックしてダウンロードできます。

HTML5 の window.postMessage インターフェイス API を理解している人は多くありません。 window.postMessage を使用すると、複数のウィンドウ/フレーム間でデータと情報をクロスドメイン転送できます。本質的に、window.postMessage はクロスドメイン Ajax リクエストの役割を果たします。もちろん、連携するリモート サーバーは必要ありません。次に、window.postMessage の仕組みと、FireFox、IE8、Opera、Safari、Chrome での使用方法を紹介します。

1. メッセージ送信終了
最初のステップは「ニュースソース」を設定することです。このメッセージ ソースを通じて、ウィンドウ レベルのデータ (メッセージ) を新しく開かれたウィンドウ (または iframe) に送信できます。次の例では、新しいウィンドウにメッセージを送信する頻度は 6 秒に 1 回で、ターゲット ウィンドウから返された応答情報を処理するようにイベント リスニングが設定されています。

コードをコピーします
コードは次のとおりです。

関数トレース(メッセージ){
var infos = Array.prototype.slice.call(arguments,0).join(" ");
if("console" in window){
console.log(infos); } else {
alert(infos);
}
}// ポップアップウィンドウを作成します
var domain = 'http://scriptandstyle.com'; var myPopup = window.open (domain '/windowPostMessageListener.html','myWindow');
//定期的にメッセージを送信します
setInterval(function(){
var message = '今の時間: ' (new Date().getTime( ));
trace('送信されたメッセージ: ' message);
myPopup.postMessage(message,domain); //データ情報を送信し、ターゲット URI を設定します。 },6*1000 );
function bindingEvent(target,noOnEventName,handler){
if(window.addEventListener){
target.addEventListener(noOnEventName,handler); else if(window) .attachEvent){
// IE のリスニング設定関数はattachEvent
target.attachEvent("on" noOnEventName,handler)
} else {
target["on" noOnEventName]=handler ;
}
};
// 受信した情報を監視します。
bindEvent(window,'message',function(event)) {
// 特定のドメインからのメッセージのみを受信します
if(event.origin !== 'http://scriptandstyle.com') return;
trace('受信した応答情報: ',event.data);


元の記事の著者は、イベントをバインドするために window.addEventListener メソッドを使用していますが、IE ではエラーが報告されます (IE は window.attachEvent です)。もちろん、イベントをラップする関数を作成することもできます。または、MooTools や jQuery/dojo などの既製のクラス ライブラリを使用して実現します。
上記の例では、新しいウィンドウが正常に開いた場合、ウィンドウ オブジェクト参照 myPopup を通じてメッセージを送信し、一致する必要がある URI (プロトコル、ホスト名、ポート番号) を指定できます (ユーザーが子ウィンドウにジャンプした場合)。
同様に、メッセージを受信するイベント ハンドラー関数もバインドしました。複数のフレームを操作するときに混乱しないように、すべての URI によって送信されたメッセージを受信できるため、メッセージ イベントのorigin 属性を確認することが重要であることに注意してください。 発信元を確認した後、このメッセージを処理する方法は、特定のビジネスとニーズによって異なります。

iframe を使用する場合、コードは次のとおりです。





コードをコピーします

コードは次のとおりです。次のように:
// 別のウィンドウも作成します (iframe、frame、frameset、top、window はすべてウィンドウ関連のオブジェクトです)。 var domain = 'http://scriptandstyle.com '; var iframe = document.getElementById('myIFrame').contentWindow;
// もちろん、イベント駆動型メソッドも使用できます。 。 。
setInterval(function(){
var message = '現在時刻: ' (new Date().getTime());
trace('データ ソース.メッセージ送信: ' message);
iframe.postMessage(message,domain); //データ情報を送信し、ターゲット URI を設定します
},6*1000);


iframe オブジェクトの contentWindow 属性にアクセスできることを確認します—— iframe オブジェクトだけではありません。


2. メッセージ受信終了
プロセス全体の 2 番目のステップは、ターゲット ウィンドウを準備することです。宛先ウィンドウが行う必要があるのは、メッセージ イベントをリッスンすることだけであり、もちろんイベントの発信元メッセージ ソースを確認することだけです。もう一度注意してください: メッセージ イベント ハンドラーは、任意のドメイン名から送信されたメッセージを受け入れることができるため、送信元を確認し、信頼リストからのメッセージのみを処理することが非常に重要です。



コードをコピー

コードは次のとおりです:

// 受信した情報を監視します。
bindEvent(window,'message',function(event) {
// 特定のドメインからのメッセージのみを受信します
if(event.origin !== 'http://davidwalsh.name') return;
trace('リッスンした情報: ',event.data);
//応答メッセージ
イベント.source .postMessage(""こんにちは、メッセージを受け取りました。event.origin);

上記の例は、リクエスト スクエアに応答メッセージを返信します。 。
message イベントの重要な属性は次のとおりです。
source - メッセージを送信するウィンドウ/iframe オブジェクト
origin - メッセージを送信するウィンドウに対応する URI (プロトコル、ドメイン、およびポートの場合)
data - 特定のデータ情報
これら 3 つのオブジェクトは、メッセージング システムと検証に不可欠です。


window.postMessage の使用に関する注意事項 他のすべての Web テクノロジーと同様に、(イベント ソースを確認せずに) 不適切に使用すると、その危険性が明らかです。もちろん、セキュリティはあなた次第です。
window.postMessage は JavaScript テクノロジの PHP に非常に似ています (笑、広告はほとんどありません!)。window.postMessage は非常に優れたテクノロジだと思いますが、どう思いますか?
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
H5:HTMLの最新バージョンの探索H5:HTMLの最新バージョンの探索May 03, 2025 am 12:14 AM

html5isamajorrevision ofhtmlstandardthatedatedatizeizeswebdevelovement byintunwingnewsemanticelementsandcapabilities.1)itenhancesscodereadability and.2)html5EnableSricher、InteractiveEnceEnceEnceEncedienceEnceDirectembe、and.2)

基本を超えて:H5コードの高度な手法基本を超えて:H5コードの高度な手法May 02, 2025 am 12:03 AM

H5の高度なヒントには以下が含まれます。1。複雑なグラフィックスを使用して描画します。2。ウェブワーカーを使用してパフォーマンスを向上させます。これらのヒントは、開発者がよりダイナミックでインタラクティブで効率的なWebアプリケーションを構築するのに役立ちます。

H5:Webコンテンツとデザインの未来H5:Webコンテンツとデザインの未来May 01, 2025 am 12:12 AM

H5(HTML5)は、新しい要素とAPIを介してWebコンテンツと設計を改善します。 1)H5はセマンティックタグ付けとマルチメディアサポートを強化します。 2)キャンバスとSVGを導入し、Webデザインを濃縮します。 3)H5は、新しいタグとAPIを介してHTML機能を拡張することにより機能します。 4)基本的な使用には、それを使用したグラフィックの作成が含まれ、高度な使用法にはwebstorageapiが含まれます。 5)開発者は、ブラウザの互換性とパフォーマンスの最適化に注意を払う必要があります。

H5:Web開発の新機能と機能H5:Web開発の新機能と機能Apr 29, 2025 am 12:07 AM

H5は多くの新しい機能と機能をもたらし、Webページのインタラクティブ性と開発効率を大幅に改善します。 1。SEOの強化などのセマンティックタグ。 2.マルチメディアサポートは、オーディオとビデオの再生とタグを簡素化します。 3. Canvas Drawingは、動的なグラフィックスの描画ツールを提供します。 4.ローカルストレージは、LocalStorageとSessionStorageを介してデータストレージを簡素化します。 5. Geolocation APIは、ロケーションベースのサービスの開発を促進します。

H5:HTML5の重要な改善H5:HTML5の重要な改善Apr 28, 2025 am 12:26 AM

HTML5は5つの重要な改善をもたらします。1。セマンティックタグにより、コードの明確性とSEO効果が向上します。 2.マルチメディアサポートは、ビデオとオーディオの埋め込みを簡素化します。 3。フォームエンハンスメントは、検証を簡素化します。 4.オフラインおよびローカルストレージにより、ユーザーエクスペリエンスが向上します。 5。キャンバスとグラフィック機能は、Webページの視覚化を強化します。

HTML5:標準とWeb開発への影響HTML5:標準とWeb開発への影響Apr 27, 2025 am 12:12 AM

HTML5のコア機能には、セマンティックタグ、マルチメディアサポート、オフラインストレージ、ローカルストレージ、フォームエンハンスメントが含まれます。 1。コードの読みやすさとSEO効果を改善するためのセマンティックタグなど。 2.ラベルでマルチメディアの埋め込みを簡素化します。 3。アプリケーションキャッシュやLocalStorageなどのオフラインストレージとローカルストレージは、ネットワークのない操作とデータストレージをサポートします。 4.フォームエンハンスメントでは、処理と検証を簡素化するための新しい入力タイプと検証プロパティを導入します。

H5コードの例:実用的なアプリケーションとチュートリアルH5コードの例:実用的なアプリケーションとチュートリアルApr 25, 2025 am 12:10 AM

H5は、さまざまな新機能と機能を提供し、フロントエンド開発の機能を大幅に向上させます。 1.マルチメディアサポート:メディアを埋め込んで要素を埋め込み、プラグインは必要ありません。 2。キャンバス:要素を使用して、2Dグラフィックとアニメーションを動的にレンダリングします。 3。ローカルストレージ:ユーザーエクスペリエンスを改善するために、ローカルストレージとセッションストレージを介して永続的なデータストレージを実装します。

H5とHTML5の接続:類似性と相違点H5とHTML5の接続:類似性と相違点Apr 24, 2025 am 12:01 AM

H5とHTML5は異なる概念です。HTML5は、新しい要素とAPIを含むHTMLのバージョンです。 H5は、HTML5に基づくモバイルアプリケーション開発フレームワークです。 HTML5はブラウザを介してコードを解析およびレンダリングしますが、H5アプリケーションはコンテナを実行し、JavaScriptを介してネイティブコードと対話する必要があります。

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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

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

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

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。