2015-08-20 4 views
9

Wenn alert('something') in JSFiddle ausgeführt wird, erhalte ich die Fehlermeldung:Ignorierter Aufruf von 'alert()'. Das Dokument Sandbox ist und das 'allow-modals' Schlüsselwort wird nicht

Ignored call to 'alert()'. The document is sandboxed, and the 'allow-modals' keyword is not set.

in der Konsole.

Ich kann keine Informationen zu diesem Fehler durch Google finden.

Wie behebe ich das? Was ist und wo kann ich das Schlüsselwort "allow-modals" einstellen?

+1

Dies ist das Sandbox iframe-Attribut. –

+0

@ DanielA.White Ahh - Ich verstehe! Ich habe einfach 'allow-modals' über Dev Tools hinzugefügt und es hat funktioniert! Sie können das als Antwort hinzufügen :) Aber ich schwöre, das hat früher funktioniert - ist das eine neue Änderung, die JSFiddle getan hat? Gibt es eine Möglichkeit, es zu beheben, ohne es jedes Mal manuell zu bearbeiten/ohne ein Benutzer-Skript oder ähnliches zu erstellen? –

+0

@WouterHuysentruit yeah - das Problem liegt in den neuesten Versionen von Chrome, wie Dans Antwort sagt, 46+ :( –

Antwort

11

IFrame Sandbox ist eine Technik, die von außen die Erstellung von Inhalten verwirrend Pop-ups hilft zu schützen, die zu kommen scheinen würde von der Hauptwebseite. Um Warnmeldungs-Popups zuzulassen, müssen Sie das iframe-Tag suchen und das sandbox-Attribut so ändern, dass es den allow-modals-Wert enthält. Für JSFiddle ist dies der Iframe namens "result". Sie müssen Ihre Fiddle erneut ausführen (Strg-Eingabe), nachdem Sie das Tag geändert haben.

Mit dem Webbrowser Developer Tools oder etwas wie Grease Monkey/Tamper Monkey ändern Sie den Iframe.

Daraus:

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

Um dies:

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

Die folgenden TamperMonkey Schnipsel scheinen schön, den Trick zu tun:

// ==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'; 
}); 
2

, dass etwas JSFiddle seiner iframe s geändert haben muss sandbox Attribut hinzufügen. Oder Chrome muss Unterstützung hinzugefügt haben allow-modals.

Eigentlich ist es etwas Neues für Chrome 46+:

+0

Hmmm, das ist nervig! :(Wird akzeptiert, wenn ich kann –

+0

Diese Links beschreiben, was Sandbox und Allow-modals sind. Sie nicht Adresse, wo ich allow-modals setzen oder eine Workaround für JSFiddle implementieren kann –

+0

Entschuldigung für die Annahme, aber die neue Antwort beantwortet meine Frage, die ich realisiere ...:/Aber vielen Dank für die Antwort! –

Verwandte Themen