Я создаю приложение, и из-за моих недостающих знаний Java и XCode я решил сделать это приложение на HTML, PHP, CSS & Javascript (JQuery). Теперь я сталкиваюсь с проблемой переноса этого приложения на разные устройства и хочу использовать PhoneGap для этого. Я поместил index.html внутри сервера для приложения, и внутри него размещен iframe, и больше ничего. Могу ли я по-прежнему получать доступ к хранилищу мультимедиа и отправлять PHP-данные назад и вперед, имея фрейм-фрейм в качестве моста между PhoneGap на Android и моим веб-сайтом на его веб-сервере? Могу ли я получить доступ к камере устройства?
Краткий ответ: нет, и вы не должны это пробовать.
Длинный ответ (и более безопасный) заключается в использовании postMessage
как описано в MDN, сделать это по-другому может привести к несогласованности между устройствами (помните, насколько фрагментирован Android и насколько болезненной может быть обратная совместимость с 4.3 и ниже)
Таким образом, вы можете получить элемент iFrame, а затем опубликовать сообщение
otherWindow.postMessage(InfoToSend, "*");
Таким же образом вы можете прослушать это событие внутри фрейма:
window.addEventListener("message", receiveMessage, false);
Это не вызовет проблем с кадрами, и это будет более безопасный способ передачи информации между кадрами, это работает в обоих направлениях, так что вы можете попросить (Изнутри вашего iFrame) использовать некоторую нативную функцию (плагин), послушайте это событие в главном приложении вашего устройства, выполнив то, что вам нужно, и после этого отправьте postMessage (из вашего приложения) на ваш iFrame с результатом (a base64
img например)
Если вы пытаетесь передать window.cordova
экземпляр или что-то подобное, он не будет работать, поэтому вам нужно будет установить разговор между iFrame
и window.top
Рамка.
Других решений пока нет …