2016-11-07 5 views
0

私は構文に問題があると確信していますが、iframeに変数を送信しようとしています(カラーボックス用)。当分の間、私は両端でドメインを受け入れている(ちょうどそれを働かせるために)。ここでは、送信ページのためのJSです:postMessage()の使用が受信されていません

$(document).ready(function() { 
if(window.location.hash) { 
    var urlimage = window.location.hash.substring(1); 
    targetiframe = document.getElementById('wbgallery').contentWindow; 
    targetiframe.postMessage(urlimage, "*"); 
    console.log(urlimage); 
} 
}); 

そしてここでは、受信ページがある:

$(document).ready(function() {  
window.addEventListener('message',receiveMessage); 
console.log(event); 
function receiveMessage(event) { 
    if (origin !== "*") 
    return; 
    inbound = event.data; 
    console.log(inbound); 
} 
}); 

私はurlimageためのコンソールログを参照し、インバウンドのイベントしか見ることができます。私はMozilla's explanationを使ってそれをすべて試してみました。

+1

'receiveMessage'が設定されていない変数' origin'を使用しています。それで、それが返されます。 – Barmar

+0

また、 'event.'パラメータを持つ関数の外に' console.log(event) 'があります。それは何をすべきか? – Barmar

+0

'origin'は' event.origin'でなければなりませんが、なぜあなたはそれにも気をつけていますか?それは '*'になることはありません。常にURLです。 – Barmar

答えて

0

iframeのページが読み込まれる前にメッセージを送信しているため、messageリスナーがまだ確立されていません。

準備ができたらiframeにメッセージを送信し、その後にメッセージを送信することができます。

親コード:

$(document).ready(function() { 
    if (window.location.hash) { 
    var urlimage = window.location.hash.substring(1); 
    var targetiframe = document.getElementById('wbgallery').contentWindow; 
    $(window).on("message", function(e) { 
     targetiframe.postMessage(urlimage, "*"); 
     console.log(urlimage); 
    }); 
    } 
}); 

のiframeコード:

$(document).ready(function() { 
    $(window).on('message', function(event) { 
    inbound = event.data; 
    console.log(inbound); 
    }); 
    window.parent.postMessage("ready", "*"); 
}); 
+0

こんにちは、ちょうど簡単な質問です。私は "Uncaught SyntaxError:missing"引数リストの後にエラーが発生し、それが 'receiveMessage(event)'のどこかにあることを示しています...)jQueryの.on()何か案は? – Daniel

+0

申し訳ありませんが、これは編集ミスで、 'function(event)'である必要があります – Barmar

+0

ありがとうございました。しかし、なぜevent.dataが 'undefined'を返すのか知っていますか?変数は送信ページでは正しいですが、正しく渡されていないようですか? – Daniel

関連する問題