我對功能檢測的需求相同,但我沒有使用Modernizr。我的用例是我使用makePDF庫在客戶端生成pdf,但無法使用IE或Edge中的數據URI打開PDF。不幸的是,我能找到的所有功能檢測腳本都在測試支持圖像的數據URI(這是由MS瀏覽器支持的),所以我必須自己寫。這裏的(爲理念由於BoltClock的評論以上)的代碼:
checkDataURISupport(function (checkResult) {
if (checkResult) {
alert('Files in data URIs are supported.');
} else {
alert('Files in data URIs are NOT supported.');
}
})
function checkDataURISupport(callback) {
try {
var request = new XMLHttpRequest();
request.onload = function reqListener() {
callback(true);
};
request.onerror = function reqListener() {
callback(false);
};
request.open('GET', 'data:application/pdf;base64,cw==');
request.send();
} catch (ex) {
callback(false);
}
}
checkDataURISupport()
我測試在IE 11,邊緣25,火狐46和Chrome 49.
作爲側面說明,另一個SO回答(https://stackoverflow.com/a/26003382/634650)使用建議:
supportsDataUri = 'download' in document.createElement('a');
這在IE,但沒有優勢。
更新
的SO回答上述的組合也包含了有關特徵檢測在iframe支持鏈接到引用a SO answer爲a Modernizr issue數據URI。在iframe中打開數據URI與在新窗口中打開數據URI基本相同,不支持在iframe中支持數據URI的Microsoft瀏覽器不支持在新窗口中打開它們。此外,在這些位置提到的iframe支持測試是同步的,所以我建議使用它來代替我的異步解決方案。
您可以通過向數據URI發送Ajax請求來蠻力。 IE和Edge會發生異常。除此之外,我不確定... – BoltClock