У меня есть продукт, который воспроизводит видео в Flash (если доступно) и возвращается к HTML5, если Flash недоступен.Определить, выполняется ли JavaScript в изолированном iframe?
Я не могу найти способ определить, выполняется ли JavaScript в iframe с атрибутом «песочница», который необходим для моего решения, потому что изолированные iframe изолируют все плагины. Песочницы IFrame может быть столь же просто, как это:
<iframe src="http://www.cross-domain.com/" sandbox="allow-scripts">
Чтобы определить, если вспышка включена, я использую метод SWFObject по проверке navigator.plugins [ «Shockwave Flash»] описание, которое устанавливается даже в. изолированный iframe. Я могу загрузить объект swf, но он не воспроизводится.
Чтобы воспроизвести эту проблему, посетите http://jsfiddle.net/max_winderbaum/9cqkjo45/, откройте своего инспектора хрома и нажмите «Запустить». Сценарий на междоменном сайте будет приостановлен в контексте изолированного iframe.
В соответствии с спецификацией W3 на http://dev.w3.org/html5/spec-preview/browsers.html#sandboxing-flag-set предполагается, что в документе будет доступен «активный флаг песочницы» (по крайней мере, так я читаю спецификацию). В документе iframe, похоже, не установлен флаг.
Есть ли у кого-нибудь идеи/решения о том, как определить, выполняется ли JavaScript из изолированного iframe?
Но, конечно же, это точка возврата HTML5? – theonlygusti
@theonlygusti Если вы продолжаете читать, проблема в том, что я понятия не имею, когда мне нужно вернуться к HTML5. Все, что я могу получить в браузере, говорит мне, что Flash включен, поэтому я загружаю Flash. Если мне нужно загрузить мое решение HTML5, мне нужно знать, отключена ли Flash в JavaScript. Если вы скажете мне, как я могу определить, отключена ли Flash, это решит мою проблему. – Omninternet
Как насчет document.plugins? Это может сказать вам нечто иное, чем navigator.plugins. Последний - это установленные плагины, первый (предположительно) плагины в документе, которые могут отличаться из-за того, что они изолированы. Я еще не проверил. –