2015-11-03 29 views
17

Chrome 46'dan bu yana, 'izin-modalar' bayrağını, iframe'den çıkacak şekilde (uyarı ve onaylama gibi) modellerin izin vermek için bir iframe'in sanal alan özniteliğine eklenmesi gerekir. Şimdiye kadar sorun yok.Henüz izin vermeyen tarayıcılarda ifrazes için 'allow-modals' sandbox flag'ı nasıl kullanılır?

Ama henüz (sürümüne 46 öncesinde Safari veya Chrome gibi) bayrağı desteklemeyen tarayıcılarda bu kodu çalıştırdığınızda aşağıdaki hatayı alıyorum: Hata 'sandbox' özelliğini ayrıştırılırken: 'allow-modals' geçersiz bir sanal alan bayrağıdır.

Bir tarayıcı tarayıcısı olmadan bu sorunu nasıl düzeltebiliriz?

cevap

1

Eklemenin tek yolu, geriye dönük olarak JS yoluyla eklenmiş gibi görünüyor.

function allowModals(){ 
 
    for (const i of document.getElementsByTagName('iframe')) { 
 
    if (!i.sandbox.supports('allow-modals')) { 
 
     console.warn("Your browser doesn't support the 'allow-modals' attribute :("); 
 
     break; 
 
    } 
 
    if (i.sandbox.contains('allow-modals')) continue; 
 
    console.info(i, "doesn't allow modals"); 
 
    i.sandbox.add('allow-modals'); 
 
    console.info(i, 'now allows modals'); 
 
    } 
 
}
<button onclick='allowModals()' style='display: block'>Allow modals</button> 
 
<iframe src="//example.com"></iframe>
yeni özellik değeri eski tarayıcılarda kullanılamaz olduğunu çok tuhaf görünüyor. Geriye dönük uyumsuz değişiklikler, web'in çalışması gereken yol değildir. :/

+0

Yanıt için teşekkürler! –