2013-12-12 2 views
2

В нашем кордове/phonegap-приложении мы используем iFrame для загрузки внешних веб-сайтов. Для связи с iFrame-контентом я создал скрипт для обоих сайтов (App и Website), который использует метод iFrame.contentWindow.postMessage(). Причина заключается в том, чтобы открывать внешние ссылки в iframe в системном браузере смартфона. Это решение отлично работало на кордове 2.3.0.Невозможно использовать postMessage внутри cordova

Сегодня я обновил версию приложения для кордоны до 3.1.0 и удалил некоторые разрешения от android-manifest. Но связь с iFrame-контентом не работает. После ошибки сообщения об ошибке отображается:

"Unable to post message to https://[domain]. Recipient has origin file://" 

Чтобы отправить сообщение в IFrame я использую следующий код:

$('#webViewIFrame').get(0).contentWindow.postMessage('message', host); 

Кто-нибудь представление о том, почему мое общение, решение не работает с Cordova 3.1 +0,0?

+1

Возможного дубликат [PostMessage в PhoneGap не работает - IFRAME родительских сообщений] (http://stackoverflow.com/questions/25554114/postmessage-in-phonegap-not-working-iframe-to-parent-messaging) –

ответ

2

Обычно это должно быть из-за проблемы с перекрестными доменами. Попробуйте использовать это:

$('#webViewIFrame').get(0).contentWindow.postMessage('message', '*'); 
0

Вам нужно будет использовать:

$('#webViewIFrame').get(0).contentWindow.postMessage('message',"*"); 

Поскольку PhoneGap/Cordova страниц подаются в файле ": //" и в соответствии с https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

». ..posting сообщение на страницу в файле: URL-адрес в настоящее время требует, чтобы аргумент targetOrigin был «*». file: // не может использоваться в качестве ограничения безопасности, это ограничение может быть изменено в будущем ».

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