2013-04-09 2 views
1

Глядя на примере PostMessage в этом документе: http://developer.chrome.com/trunk/apps/app_external.html#postMessageЕсть ли простой пример работы postMessage с изолированной страницей?

Это наводит на мысль о том, что страница песочницы будет иметь обработчик событий зарегистрированный синхронно, в противном случае, как предполагается, что это когда-нибудь событие PostMessage?

Я предполагаю, что это идет вместе с ошибкой здесь: https://code.google.com/p/chromium/issues/detail?id=154662 Кажется, вы не можете использовать окно функции обратного вызова, чтобы послать PostMessage в изолированный IFRAME, однако есть упоминание о обходном пути, где вы используете страницу, которая содержит IFRAME на изолированную страницу. Проблема только в том, что до сих пор неясно, как/когда событие срабатывает и где оно видно ...

Этот материал песочницы представляется очень сложным, и документация вокруг него вводит в заблуждение и/или устарела. Этот пример даже имеет смысл? Возможно ли отправить сообщение на фоновое изображение без предварительного получения сообщения и записи события. Source?

Как вы регистрируете прослушиватель событий на странице фона для ответа на отправку сообщений с изолированной страницы? Так много вопросов здесь, и все, что у меня есть, - это испорченный пример.

+0

После некоторой игры вокруг это работало: 'setTimeout (function() { win.contentWindow.frames [0] .postMessage ('Я только что позвонил ... чтобы сказать ... привет.', ' * '); }, 100); ' Но это кажется сумасшедшим, когда нужно сделать это с тайм-аутом. – ddumont

+0

Я не могу ответить на ваш вопрос, как он сформулирован. Но вы правы: этот пример слишком проблематичен. Это технически корректно, потому что он действительно «отправляет сообщение на страницу с песочницей, которую он открывает». Это не очень полезный пример, потому что он будет ненадежным. Обратите внимание на рекомендацию WHATWG spec о том, что «когда сообщение должно быть отправлено в окно только что созданного дочернего iframe, авторам рекомендуется предоставить дочернему документу сообщение для своего родителя, сообщающее о своей готовности получать сообщения, а родителям - ждать для этого сообщения перед началом отправки сообщений ». – sowbug

+0

Я проработал свой путь. К сожалению, ответ не краток, но он выполняет свою работу и действительно работает так, как я предполагаю, они намеревались. Сегодня я постараюсь ответить на свой вопрос. – ddumont

ответ

1

Примеры на примерах chrome-app на github - это больше того, что вы ищете. Вот песочницы страница добавления слушателя событий, чтобы реагировать на события: https://github.com/GoogleChrome/chrome-app-samples/blob/master/sandbox/sandbox.html

А вот фон страницы с помощью postMessage: https://github.com/GoogleChrome/chrome-app-samples/blob/master/sandbox/mainpage.js

Примеры GitHub гораздо более богатым, чем те, на документации. https://github.com/GoogleChrome/chrome-app-samples содержит примеры всего, что вам нужно сделать.

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