2011-09-10 12 views
2

私のサーバーからJavascriptをロードするブックマークレットに取り組んでいます。 JSはiframeが埋め込まれたdivを追加します(私は自分のドメインからコンテンツを渡す/読み込むことができます)。子どものIFRAME(クロスドメイン)内からDIVを削除する

iframe内からiframeを含むDIV要素を削除する方法がわかりません。私はwindow.parentをクロスドメインなので参照できません。 window.postMessageが正しい考えであるように見えますが、私が理解するのに役立つ十分な文書が見つかりませんでした。

iframeのを閉じるiframe内にボタンがあります。援助は高く評価されます。

EDIT: のwindow.postMessageを使用する私の試みで、私は(任意のドメイン上のエルゴ、)ブックマークレットでイベントリスナを作成しようとした:

var receiveMessage = function(event) { 
    $("#iframecontainerdiv").remove(); 
    console.log (event); 
    alert (event.origin); 
} 
window.addEventListener("message", receiveMessage, false); 

そしてIFRAME内、私がしようとしましたそれをトリガー:

$("#abort").click(function(e) { 
    e.preventDefault(); 
    window.close(); 
    window.postMessage("Hello, World!", "*"); 
}); 

私はこの権利についてのつもりかどうかわからないんだけど...

+0

あなたがこれを確認しましたか? https://developer.mozilla.org/en/DOM/window.postMessage –

+0

@Digital Plane - 私はそのページを正しく読んでいるかどうかを判断するのに役立つ質問に詳細を追加しました。 –

答えて

1

を私はあなたが間違ったウィンドウにメッセージを投稿していると思います。たぶんwindow.top.postMessageを使用して、iframeを削除するように上部ウィンドウに指示するメッセージを投稿する必要があります。

ので:

var receiveMessage = function(event) { 
    if ("close-iframe" == event.data) { 
     $("#iframecontainerdiv").remove(); 
    } 
    console.log (event); 
    alert (event.origin); 
} 
window.addEventListener("message", receiveMessage, false); 

と:

$("#abort").click(function(e) { 
    e.preventDefault(); 
    window.top.postMessage("close-iframe", "*"); 
}); 

iframeでドメイン結果からのメッセージのみが削除されるようにするには、必要に応じて、メッセージの発信元をテストすることができます。

+0

ありがとうございました!私は親の代わりにiframeのウィンドウにメッセージを投稿していたことを見落としていました。コミュニケーションのしくみについてはまだ少しばかげていますが、今はそれを得ることに非常に近いです。ソリューションに感謝します。 –

+0

うれしい私は助けることができます。 –

+0

はChromeで正しく動作しませんか? – Ardeus

関連する問題