Nicht erfasster SyntaxError: „PostMessage“ konnte nicht auf „Fenster“ ausgeführt werden: Ungültiger Zielursprung „my_page“ in einem Aufruf von „postMessage“.

Lesezeit: 1 Minute

Benutzeravatar von noobie-php
noobie-php

Ich habe folgendes Skript

Übergeordnete Seite (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");
        });

Die Kinderseite

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

Grundsätzlich wird ein Popup geöffnet, dann ein Ajax für das Popup ausgeführt und das Ergebnis an das übergeordnete Element zurückgegeben. Aber von Child erhalte ich diesen Fehler.

Nicht erfasster SyntaxError: „PostMessage“ konnte nicht auf „Fenster“ ausgeführt werden: Ungültiger Zielursprung „pair_pixel_filter.php“ in einem Aufruf von „postMessage“

Der 2. Parameter zu postMessage ist der „Zielursprung“. Dies ist das Domain wo sich die Seite befindet, nicht der Name der (php)-Datei.

Es muss so etwas sein:

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

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

  • Sehr wahr, ich habe gerade herausgefunden, dass wir den vollständigen Pfad durchlaufen müssen localhost/abc/mypage.php

    – noobie-php

    29. April 2014 um 20:09

  • @noobie-php Eigentlich ignoriert Javascript alles nach der Domain, sodass das Zielfenster es akzeptiert, wenn der Host localhost ist, auch wenn der Pfad unterschiedlich ist. Daher bestanden http://localhost/abc/mypage.php als Ursprung hat den gleichen Effekt wie das Passieren http://localhost oder http://localhost/literally/anything/xyz.php.

    – Jay Dadhania

    7. November 2019 um 17:15 Uhr

  • Sie müssen jedoch die Portnummer angeben

    – Dave

    5. Juni um 15:24

  • @Dave Nur wenn es nicht dem Standard entspricht. So wie Sie normalerweise eine URL in den Browser eingeben würden.

    – generisch

    5. Juni um 21:05

1452670cookie-checkNicht erfasster SyntaxError: „PostMessage“ konnte nicht auf „Fenster“ ausgeführt werden: Ungültiger Zielursprung „my_page“ in einem Aufruf von „postMessage“.

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy