Error de sintaxis no detectado: no se pudo ejecutar ‘postMessage’ en ‘Window’: origen de destino no válido ‘my_page’ en una llamada a ‘postMessage’

1 minuto de lectura

avatar de usuario de noobie-php
noobie-php

tengo el siguiente script

Página principal (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 página del niño

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

Básicamente, abrir una ventana emergente y luego hacer algo de ajax en la ventana emergente y devolver el resultado a los padres. Pero de Child recibo este error.

Error de sintaxis no detectado: no se pudo ejecutar ‘postMessage’ en ‘Window’: origen de destino no válido ‘pair_pixel_filter.php’ en una llamada a ‘postMessage’

El segundo parámetro de postMessage es el “origen objetivo”. Este es el dominio donde se encuentra la página, no el nombre del archivo (php).

Tiene que ser algo como:

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

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

  • muy cierto, acabo de enterarme de que necesitamos pasar la ruta completa como localhost/abc/mypage.php

    – noobie-php

    29/04/2014 a las 20:09

  • @noobie-php en realidad, javascript ignorará cualquier cosa después del dominio, por lo que la ventana de destino lo aceptará si el host es localhost, incluso si la ruta es diferente. Por lo tanto, pasando http://localhost/abc/mypage.php como origen tendrá el mismo efecto que pasar http://localhost o http://localhost/literally/anything/xyz.php.

    – Jay Dadhania

    7 de noviembre de 2019 a las 17:15

¿Ha sido útil esta solución?