由于Chrome 46需要在iframe的沙箱属性中添加“allow-modals”标志,以允许模式(如alert和confirm)突破iframe。到目前为止没问题。
但是当您在尚未支持该标记的浏览器中运行该代码时(如版本46之前的Safari或Chrome),您会收到以下错误: 解析'sandbox'属性时出错:'allow-modals'是无效的沙箱标记。
任何人都知道如何在没有某种浏览器嗅探的情况下解决这个问题?
答案 0 :(得分:1)
似乎只能通过JS追溯添加它。
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>
非常奇怪的是,新属性值无法在旧版浏览器中使用。向后不兼容的更改不是Web应该工作的方式。 :/