SQLの窓

2011年08月18日


JS : クロスドメインの IFRAME からデータを JSON 形式で引き渡す

以下には、lightbox.on.coocan.jp/message_cd.htm をIFRAME で埋め込んでいます。
当然このブログはドメインが違うので、本来ならばアクセスできませんが、postMessage
の第二引数に "*" を渡す事によって(本来は個別指定)、 どんなドメインへもメッセージ
を送る事ができます。
( 開発者ツールを開いて実行して下さい : IE8 でも動きます )

ただ、送れるメッセージは文字列で一つだけなので、送り出すほうで JSON の文字列を
用意しておいて、こちら側ではそれを eval して利用しています。お互いのドメインの
管理者か同じまたは信頼し合えるならば、この方法で多くのデータを一度にやりとりで
きるはずです。

または、IFRAME 側を、埋め込むだけでどこでも使えるような一つの完全なユニットと
して設計する為に必要です。
データを受け取る為の定義(get_post_message)
※ 実際は、js ライブラリ化して、script 要素で読み込めば使えるようにします
<script type="text/javascript">
function get_post_message(e) {
	var prop;
	var result = eval(e.data);
	try {
		if ( console.dir ) {
			console.dir(result);
		}
		else {
			for( prop in result ) {
				console.log(prop+":"+result[prop]);
			}
		}
	}
	catch(e){}
}
if ( window.addEventListener ) {
	window.addEventListener('message',get_post_message, false);
}
else {
	window.attachEvent('onmessage',get_post_message);
}

</script>
<iframe
	src="http://lightbox.on.coocan.jp/message_cd.htm"
	name="myframe"
	frameborder="1"
	scrolling="yes"
	width="300"
	height="100"
></iframe>

ユニット側
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=EUC-JP">
<script type="text/javascript">
function t_message() {
	var value1 = document.getElementById("message1").value;
	var value2 = document.getElementById("message2").value;
	var objString = '({ "message1": "'+value1+'", "message2": "'+value2+'" })';
	parent.postMessage( objString, "*" );
}
</script>
</head>
<body>

<input
	type="text"
	id="message1"
	style='width:200px;'
	value="日本語表示1"
/>
<br />
<input
	type="text"
	id="message2"
	style='width:200px;'
	value="日本語表示2"
/>
<br />
<input
	type="button"
	value="post"
	onclick='t_message();'
/>

</body>
</html>



【JavaScript オブジェクトの最新記事】
posted by lightbox at 2011-08-18 22:39 | JavaScript オブジェクト | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり