web-dev-qa-db-fra.com

SyntaxError non capturée: échec de l'exécution de 'postMessage' sur 'Window': origine cible non valide 'my_page' dans un appel à 'postMessage'

j'ai le script suivant

Page parent (pair_pixel_filter.php):

 window.addEventListener("message", function(e) {
            $('#log').append("Received message: " + (e.data));
        }, false);
 $('.photo-upload-btn').click(function(event) {
            event.preventDefault();
            window.open($(this).attr("href"), "popupWindow", "width=600,height=600,scrollbars=yes");
        });

La page enfant

$.ajax({
            type: 'post',
            url: url,
            data: {
                base64data: dataURL
            },
            success: function(data) {
                window.opener.postMessage(data, "pair_pixel_filter.php");
                window.close(); }
        });

Fondamentalement, ouvrir un Popup puis faire un ajax à la pop-up et renvoyer le résultat au parent. Mais de l'enfant, je reçois cette erreur.

SyntaxError non capturée: échec de l'exécution de 'postMessage' sur 'Window': origine cible non valide 'pair_pixel_filter.php' dans un appel à 'postMessage'

16
noobie-php

Le 2ème paramètre de postMessage est "l'origine cible". C'est le domaine où se trouve la page, pas le nom du fichier (php).

Cela doit être quelque chose comme:

window.opener.postMessage(data, "http://example.com");

Voir: https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

21
Rocket Hazmat