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