忽略对'alert()'的调用.该文档是沙箱,并且未设置'allow-modals'关键字

ᔕᖺᘎ*_*ᖺᘎᕊ 14 javascript google-chrome jsfiddle

每当alert('something')在JSFiddle中运行时,我都会收到错误:

忽略对'alert()'的调用.该文档是沙箱,并且未设置'allow-modals'关键字.

在控制台中.

我无法通过Google找到有关此错误的任何信息.

我该如何解决?'allow-modals'关键字是什么,我在哪里可以设置?

pie*_*son 15

IFrame沙盒技术有助于防止外部内容产生混乱的弹出窗口,这些弹出窗口似乎来自主网站.要允许警报弹出窗口,您需要找到iframe标记,并修改沙箱属性以包含allow-modals值.对于JSFiddle,这是名为"result"的iframe.修改标签后,您需要重新运行(ctrl-enter)您的小提琴.

使用Web浏览器开发人员工具或类似Grease Monkey/Tamper Monkey的内容更改iframe.

由此:

<iframe name="result" sandbox="allow-forms allow-popups allow-scripts allow-same-origin" frameborder="0">
Run Code Online (Sandbox Code Playgroud)

对此:

<iframe name="result" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" frameborder="0">
Run Code Online (Sandbox Code Playgroud)

以下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';
});
Run Code Online (Sandbox Code Playgroud)