После нескольких недель работы я наконец-то был готов развернуть свое приложение, чтобы узнать, что метеор не работает в iframe. Он отлично работает, когда окно верхнего уровня и iframe работают в одном домене, но не тогда, когда домены отличаются. Ошибка, которую я получаю в Chrome:
Uncaught SecurityError: Access to 'sessionStorage' is denied for this document.
После этой ошибки инициализация Meteor, похоже, прекратится, и даже не будет определено даже Meteor
.
После некоторого рытья я нашел эту ссылку и объяснение: http://www.w3.org/TR/webstorage/#user-tracking : " Блокирование стороннего хранилища Пользовательские агенты могут ограничивать доступ к объектам localStorage сценариям, происходящим в домене документа верхнего уровня контекста просмотра, например, лишать доступ к API для страниц из других доменов, работающих в iframe. "
Проблема не специфична для моего приложения. Вы можете взять любое из демонстрационных приложений в галерее метеоров и попытаться внедрить их на другую страницу с iframe, и вы увидите, что я имею в виду.
Есть ли способ обойти это?
Изменить 2014-01-07: Я попробовал обернуть некоторые из мест, где исключения были выброшены в блоки try-catch, но у них сложилось впечатление, что это слишком сильно искажает метеор, так что он не будет правильно инициализироваться по другой причине.