Подтвердить что ты не робот

Как обрабатывать флаг песочницы 'allow-modals' для iframe в браузерах, которые еще не поддерживают его?

Начиная с Chrome 46, необходимо добавить флаг "allow-modals" в атрибут sandbox iframe, чтобы позволить модалам (например, оповестить и подтвердить) выйти из iframe. Пока нет проблем.

Но когда вы запускаете этот код в браузерах, которые еще не поддерживают флаг (например, Safari или Chrome до версии 46), вы получаете следующую ошибку: Ошибка при анализе атрибута "песочница": "allow-modals" - это недопустимый флаг песочницы.

Кто-нибудь знает, как исправить это без какого-либо браузера, нюхающего?

4b9b3361

Ответ 1

Кажется, что единственный способ добавить это ретроактивно, через 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>