javascript - 检测浏览器是否支持带 iframe 的数据 uri 方案

标签 javascript iframe cross-browser browser-feature-detection data-uri-scheme

Internet Explorer 不支持 iframe url 的数据 uri 方案(参见 http://msdn.microsoft.com/en-us/library/cc848897%28v=vs.85%29.aspx)。其他浏览器可以。由于浏览器检测加载了测试和面向 future 的问题,我想使用功能检测来解决这个问题。

那么:如何检测浏览器是否支持 iframe 的数据 uri 方案?

最佳答案

This solution by Kevin Martin经过测试,似乎在 IE、FF 和 Chrome 中给出了正确的结果:

function iframeDataURITest(src) {
    var support,
        iframe = document.createElement('iframe');

    iframe.style.display = 'none';
    iframe.setAttribute('src', src);

    document.body.appendChild(iframe);

    try {
        support = !!iframe.contentDocument;
    } catch (e) {
        support = false;
    }

    document.body.removeChild(iframe);

    return support;
}

console.log('Empty data uri', iframeDataURITest('data:;base64,'));
console.log('"*" data uri', iframeDataURITest('data:text/html;base64,Kg=='));

与其他一些建议不同,它是同步的 - 无需处理超时或回调。

关于javascript - 检测浏览器是否支持带 iframe 的数据 uri 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25123313/

相关文章:

javascript - 当 iFrame 导入 JS 库时,浏览器实际上会再次导入该库吗?

angular - 如何防止 Angular 应用程序加载到 Index.html 中

javascript - 检测同一域的其他选项卡/窗口的存在

javascript - 正确实现 HTML5shiv?

javascript - jQPlot X 轴上的日期刻度间隔不起作用

javascript - 如何在vuejs中用循环包装2个或更多的html元素

javascript - 带 iframe 的 JQuery 厚盒。将焦点设置到输入字段

Javascript iframe 未在 Bootstrap 弹出窗口中加载(模式)

javascript - 动态添加图像到列表元素

javascript - 在 JavaScript 中进行四种字符串操作