iframe sandbox allow-modals

¿Cómo manejar el indicador de la zona de pruebas ''allow-modals'' para los iframes en los navegadores que aún no lo admiten?



sandbox (1)

Parece que la única forma de agregarlo es retroactivamente, a través de JS.

function allowModals(){ for (const i of document.getElementsByTagName(''iframe'')) { if (!i.sandbox.supports(''allow-modals'')) { console.warn("Your browser doesn''t support the ''allow-modals'' attribute :("); break; } if (i.sandbox.contains(''allow-modals'')) continue; console.info(i, "doesn''t allow modals"); i.sandbox.add(''allow-modals''); console.info(i, ''now allows modals''); } }

<button onclick=''allowModals()'' style=''display: block''>Allow modals</button> <iframe src="//example.com"></iframe>

Parece muy extraño que un nuevo valor de atributo no se pueda usar en navegadores antiguos. Los cambios incompatibles con versiones anteriores no son la forma en que debería funcionar la web. : /

Desde Chrome 46, es necesario agregar el indicador ''allow-modals'' al atributo sandbox de un iframe para permitir que los modals (como alerta y confirmación) salgan del iframe. No hay problema hasta ahora.

Pero cuando ejecuta ese código en los navegadores que aún no admiten la bandera (como Safari o Chrome antes de la versión 46), aparece el siguiente error: Error al analizar el atributo ''sandbox'': ''allow-modals'' no es una marca válida.

¿Alguien tiene una idea de cómo solucionar esto sin algún tipo de rastreo del navegador?