2015-04-28 7 views
3

У меня есть IFRAME:Не удалось выполнить 'PostMessage' на 'Окно': Invalid целевой происхождения

<iframe id="GameFrame" 
sandbox="allow-scripts allow-pointer-lock" 
src="https://127.0.0.1:112/games/1047/play"> 
</iframe> 

Мой родительская страница находится по адресу:

https://127.0.0.1/arcade/not-hidden/space-blaster-1047 

Я пытаюсь оставить сообщение в плавающем фрейме:

var gameIframe = $("#GameFrame"); 
gameIframe.get(0).contentWindow.postMessage("screenshot", ""); 

Но это бросает ошибку:

Uncaught SyntaxError: Failed to execute 'postMessage' on 'Window': Invalid target origin '' in a call to 'postMessage'.

Другие попытки:

postMessage("screenshot", "https://127.0.0.1"); 

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided (' https://127.0.0.1 ') does not match the recipient window's origin ('null').

Как я могу получить это опубликовать сообщение в плавающем фрейме?

+0

Это выглядит как дубликат. Смотрите: http://stackoverflow.com/questions/23373376/uncaught-syntaxerror-failed-to-execute-postmessage-on-window-invalid-targe – theUtherSide

ответ

1

Просто понял это прямо сейчас, нужно использовать * как происхождение:

gameIframe.get(0).contentWindow.postMessage("screenshot", "*"); 
+0

Помните об опасности использования «*» для цели. Это позволяет любому JS получать сообщение, реализуя 'addEventListener ('message' ...)'. В MDN есть сведения о том, как безопасно использовать 'postMessage'. https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage – theUtherSide

+0

Я получаю сообщение «Протоколы, домены и порты должны совпадать» с ошибкой в ​​Safari, хотя я отправляю сообщениеMessage в * target origin , Другие браузеры работают. Подстановочная мишень не поддерживается Safari? Что может быть причиной? – fiatux

Смежные вопросы