Как scribd реализовал свой полноэкранный режим?
Полноэкранный режим Scribd довольно аккуратный (пример: http://www.scribd.com/doc/13161906/Java-Lab-Manual-With-Java-Installation-Guide?classic_ui=1). Преимущество (особенно для RIA) заключается в том, что он (почти) не отключает клавиатуру полностью, как в полноэкранном режиме по умолчанию во Flash Player. Кажется, также работает, когда встроен.
Как они это делают?
3 ответа
Этот пример не использует полный экран вообще. То, что они считают "полноэкранным", это просто увеличение флеш-окна, чтобы охватить всю область браузера. Панели инструментов браузера, строка состояния и хром все еще видны, как и все, что находится за пределами браузера.
Это хороший эффект для виджета Flash/Flex, встроенного в HTML-страницу, но он отличается от полноэкранного.
Реализация в основном на стороне JavaScript/DOM и только минимально во Flash/Flex. Когда пользователь нажимает "Полный экран", используйте ExternalInterface для вызова функции JavaScript. Затем этой JS-функции необходимо изменить положение и изменить размер элемента Flash, чтобы он находился в точке (0,0) и занимал весь экран. Если HTML длиннее страницы, вам также нужно скрыть это, чтобы полоса прокрутки браузера исчезла, как в примере с scribd. Другая кнопка внутри приложения Flex/Flash предоставляет кнопку закрытия или связанную кнопку, чтобы полностью изменить процесс.
Как разработчик Flex, я возражаю против использования термина "Full Screen" для этого. Полноэкранный режим является распространенной функцией многих приложений Flash/Flex, в частности, видеоплееров. Пользователям неудобно использовать термин для обозначения чего-то другого. "Развернуть" было бы более уместно, чем "Полный экран".
Как scribd реализовал свой полноэкранный режим?
Не очень хорошо, если вы спросите меня. Их интерфейс шокирующе нарушен здесь, в Ubuntu... Это довольно странно, так как 99,9% других приложений Flash работают полностью.
Boots XP virtualbox image
Что ж, похоже, они только что изменили div, в котором находится flash, с некоторым JavaScript и изменили размеры апплета, чтобы соответствовать. Плюс еще один обработчик событий JavaScript для определения размера экрана.
Ничего технически умного, но хорошо, что они это сделали.
На самом деле, Сэм, они делают полноэкранную флэш-память доступной, но опция 'full_screen_type' должна быть установлена на 'flash' для объекта документа:
var scribd_doc = scribd.Document.getDoc (doc_id, access_key);
scribd_doc.addParam ('full_screen_type', 'flash');
По умолчанию 'full_screen_type' фактически настроен на рендеринг с использованием javascript, что приводит к полноэкранной функции только в окне браузера.
Пара хедз-апов для тех, кто использует sbribd.js:
- Полноэкранная версия javascript в некотором смысле нарушена, и
- По состоянию на ноябрь 2009 года в библиотеке scribd.js было несколько необъявленных переменных javascript, которые могут быть повреждены в проводнике.