web-dev-qa-db-ja.com

「alert()」の呼び出しは無視されました。ドキュメントはサンドボックス化されており、「allow-modals」キーワードが設定されていません

JSFiddleでalert('something')を実行すると、常にエラーが発生します。

「alert()」の呼び出しは無視されました。ドキュメントはサンドボックス化されており、「allow-modals」キーワードが設定されていません。

コンソールで。

Googleでこのエラーに関する情報を見つけることができません。

どうすれば修正できますか? 「allow-modals」キーワードとは何ですか?どこに設定できますか?

14
ᔕᖺᘎᕊ

IFrameサンドボックスは、外部のコンテンツから保護して、メインWebサイトから表示されているように見える紛らわしいポップアップを作成するのに役立つ手法です。アラートポップアップを許可するには、iframeタグを検索し、サンドボックス属性を変更して、allow-modals値を含める必要があります。 JSFiddleの場合、これは「結果」という名前のiframeです。タグを変更した後、Fiddle)を再実行(Ctrl-Enter)する必要があります。

Webブラウザーの開発者ツールまたは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';
});
16
pierce.jason

これはJSFiddleがiframe属性を追加するためにsandboxsに変更している必要があるものです。またはChromeはサポートを追加している必要がありますallow-modals

実際、これはChrome 46+にとって新しいものです。

2
Daniel A. White