2015-08-20 8 views
9

Gdy uruchomiony alert('something') w JSFiddle, pojawia się błąd:Zignorowane wywołanie "alert()". Dokument jest piaskownicy, a słowo kluczowe „Zezwalaj-czasowniki modalne” nie jest ustawiona

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

w konsoli.

Nie mogę znaleźć żadnych informacji na temat tego błędu za pośrednictwem Google.

Jak to naprawić? Co to jest i gdzie mogę ustawić słowo kluczowe "allow-modals"?

+1

To jest atrybut sandbox iframe. –

+0

@ DanielA.White Ahh - Rozumiem! Właśnie dodałem 'allow-modals' przez Dev Tools i zadziałało! Możesz to dodać jako odpowiedź :) Ale przysięgam, że to już działa - czy to nowa zmiana, którą zrobił JSFiddle? Czy istnieje sposób, aby to naprawić bez ręcznej edycji za każdym razem/bez konieczności tworzenia usercript lub podobnego do tego zrobić? –

+0

@WouterHuysentruit yeah - problem leży w najnowszych wersjach Chrome, jak mówi odpowiedź Dana, 46+ :( –

Odpowiedz

11

IFrame Piaskownica to technika, która pomaga chronić przed zawartości zewnętrznej tworząc mylące wyskakujące okienka, które wydają się pochodzić z głównej strony internetowej. Aby zezwolić na wyskakujące powiadomienia, musisz znaleźć znacznik iframe i zmodyfikować atrybut piaskownicy tak, aby zawierał wartość dozwolonych modów. Dla JSFiddle jest to element iframe o nazwie "result". Będziesz musiał ponownie uruchomić (ctrl-enter) swój Fiddle po modyfikacji tagu.

Korzystanie z przeglądarki Narzędzia programistów lub coś w stylu Grease Monkey/Tamper Monkey zmieniają element iframe.

Z tego:

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

Do tego:

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

Poniższy fragment TamperMonkey wydaje rade ładnie:

// ==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

To jest coś, co JSFiddle musiał zmienić na iframe s, aby dodać atrybut sandbox. Lub Chrome musi dodać obsługę allow-modals.

Właściwie jest to coś nowego dla Chrome 46+:

+0

Hmmm to denerwujące! :(Przyjmę, gdy będę mógł –

+0

Te linki opisują, co to jest sandbox i allow-modals. adres gdzie ustawić allow-modals lub jak zaimplementować obejście dla JSFiddle –

+0

Przepraszamy za nieakceptowanie, ale nowa odpowiedź w rzeczywistości odpowiada na moje pytanie Zrozumiałem ...:/Ale bardzo dziękuję za odpowiedź! –

Powiązane problemy