У меня есть приложение для рельсов с контентом, с которым другие сайты должны получить доступ через iframe. Контент должен иметь разный макет, если он отображается на веб-сайтах (нет строки меню и т. Д.) Я создал новый файл макета с именем iframe.html.erb Как проверить, вызывается ли страница из внешнего iframe, так что используется правильный файл макета?Разный макет для iframe
ответ
Насколько я знаю, когда вы делаете
<iframe src="www.google.pl"></iframe>
вы не имеете никакого контроля над макета или стилей отображения страницы в IFRAME, если вы не являетесь владельцем страницы и может сделать это выглядеть как угодно.
EDITED
Если вы показывая свой собственный сайт идти, как это:
<iframe src="/some_site_that_i_can_change_code_in?from=iframe"></iframe>
, а затем в контроллер some_site_that_i_can_change_code_in:
if params[:from] == "iframe"
render :layout => "for_iframe"
else
render :layout => "normal"
end
Я думаю, что единственный способ сделать это с Javascript, а затем перенаправить, но это довольно грязно и не очень хорошая идея. См. Эту тему для получения дополнительной информации: Detecting if this is an iframe load or direct
Хороший способ управления конкретным макетом и контентом при обслуживании iframe заключается в регистрации «imrame» mimetype.
## config/initializers/mime_types.rb
Mime::Type.register 'text/html', "iframe"
Создайте представление, которое соответствует действию контроллера обслуживается именно: show.iframe.haml
. Затем, когда запрос приходит с format: iframe
, он отобразит версию iframe.
Таким образом, вы можете точно контролировать, что находится в iframe на других сайтах. Не нужно сходить с ума в контроллере.
- 1. log4net/C# - Разный макет, основанный на уровне
- 2. ListView со всеми элементами, имеющими разный макет
- 3. DP отображает разный макет на другом экране
- 4. Как загрузить разный макет в angularjs
- 5. Как иметь разный макет для другой модели в cakephp
- 6. угловой ui-router разный макет главной страницы для разных видов
- 7. Как создать разный макет для Galaxy S4 и Nexus 4
- 8. Разный макет для первой строки ListView в ArrayAdapter
- 9. Я не могу создать разный макет для S3 и Nexus4
- 10. Разный макет для страниц 1-го и последующего отчета
- 11. Разный фрагмент для планшета
- 12. Laravel 5.2: Разный вид-макет в зависимости от маршрута
- 13. Разный макет на веб-сайте по нескольким нагрузкам
- 14. andorid - показывает разный макет, если в адаптере нет объектов
- 15. Один и тот же xml-код, разный графический макет
- 16. Тот же макет производит разный цвет на планшете
- 17. Может ли каждый пользователь иметь разный макет в Liferay?
- 18. Установить новый макет для фрагмента
- 19. Разный поиск пучка-продукта
- 20. IFrame внутри Dijit/макет/ContentPane не скроллбар
- 21. Разный выход времени для ToUniversalTime
- 22. Разный проект Xcode для ревизии
- 23. Разный стиль для каждого результата
- 24. Разный выбор результата для существует?
- 25. Разный стиль для каждого переключателя
- 26. Разный фон для каждой страницы?
- 27. Разный сеанс для префикса CakePHF
- 28. Разный контент для каждого поставщика
- 29. Разный IP для каждого бота?
- 30. Как создать разный макет для разных устройств и ориентации в android
Я знаю, как настроить iframe. Мой вопрос был в том, как я могу сказать, что мое приложение rails ссылается на страницу из iframe. – Arwed
Я отредактировал ответ в соответствии с вашим комментарием –
Но я не хочу показывать свой собственный сайт в iframe, когда он вызывается напрямую. – Arwed