Редактировать атрибуты iframe из виджета в Adobe Captivate
Я пишу виджет для Adobe Captivate, который должен работать в HTML5. Этот виджет содержит кнопку для переключения в полноэкранный режим. По сути, плагин выглядит так:
function toggleFullscreen(elem) {
elem = elem || document.documentElement;
if (!document.fullscreenElement && !document.mozFullScreenElement &&
!document.webkitFullscreenElement && !document.msFullscreenElement) {
if (elem.requestFullscreen) {
elem.requestFullscreen();
} else if (elem.msRequestFullscreen) {
elem.msRequestFullscreen();
} else if (elem.mozRequestFullScreen) {
elem.mozRequestFullScreen();
} else if (elem.webkitRequestFullscreen) {
elem.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
}
document.getElementById("fullscreen").addEventListener("click", toggleFullscreen);
<button id="fullscren">Toggle full screen</button>
Но виджет вставляется в iframe
, и это iframe
не имеет allowfullscreen
атрибут, и, следовательно, не позволяет кнопке переключаться в полноэкранный режим.
Я ищу способ добавить allowfullscreen
приписать iframe
выполнив некоторый Javascript изнутри iframe
либо опубликовать проект с правильной конфигурацией, чтобы автоматически добавить этот атрибут.
Я пытался использовать аксессор Javascript parent.document
, но я получаю ошибку:
Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.
1 ответ
С использованием parent
Атрибут в Javascript достаточно. Затем вы можете добавить allowfullscreen
атрибут с этой строкой:
parent.document.getElementsByTagName('iframe')[0].setAttribute('allowFullScreen', 'true');
Однако это не работает при отображении опубликованного проекта из локального источника (защита от источника). Он отлично работает при отображении с веб-сервера (даже localhost).