Игнорируется вызов "alert()". Документ изолирован, а ключевое слово 'allow-modals' не задано

При запуске alert('something') в JSFiddle я получаю сообщение об ошибке:

Игнорируется вызов "alert()". Документ изолирован и ключевое слово 'allow-modals' не установлено.

в консоли.

Я не могу найти информацию об этой ошибке через Google.

Как это исправить? Что такое и где я могу установить ключевое слово 'allow-modals'?

Ответ 1

Песочница IFrame - это метод, который помогает защитить от внешнего контента, создавая запутывающие всплывающие окна, которые, как представляется, поступают с основного веб-сайта. Чтобы разрешить всплывающие окна, вам нужно будет найти тег iframe и изменить атрибут sandbox, чтобы он содержал значение allow-modals. Для JSFiddle это iframe с именем "result". Вам нужно будет перезапустить (ctrl-enter) свой скрипт после изменения тега.

Использование веб-браузера Инструменты разработчика или что-то вроде Grease Monkey/Tamper Monkey изменяет iframe.

Из этого:

<iframe name="result" sandbox="allow-forms allow-popups allow-scripts allow-same-origin" frameborder="0">

Для этого:

<iframe name="result" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" frameborder="0">

Следующий фрагмент TamperMonkey, похоже, прекрасно подходит:

// ==UserScript==
// @name         Enable alert()s
// @match        //jsfiddle.com/*
// @require      http://code.jquery.com/jquery-latest.min.js
// @grant        unsafeWindow
// ==/UserScript==
this.$ = this.jQuery = jQuery.noConflict(true);
$("iframe[name='result']").each(function() {
    this.sandbox += ' allow-modals';
});