我選擇避免將瀏覽器識別爲不可靠和混亂。相反,我只是測試我的頁面使用的每個元素或API的實際支持。爲了測試音頻支持,我提出了這個問題。測試瀏覽器支持HTML5元素和API。爲什麼這項工作
function testAudio()
{
if(window.AudioContext = window.AudioContext)
{
myAudio = new AudioContext();
alert("Browser supports AudioContext");
}
else
{
if(window.Audio = window.Audio)
{
myAudio = new Audio();
alert("Browser supports Audio Element");
}
else {alert("This browser does not support AudioContext or Audio Element");}
}
}
工程就像一個魅力。當前的瀏覽器對於AudioContext返回true,IE11對Audio()返回true,對於兩者都返回false。但爲什麼?
在真的情況下,我將一個對象分配給窗口對象的對象屬性。是否有窗口對象的AudioContext和Audio元素屬性?或者,瀏覽器對於可能存在但不存在的對象的賦值返回true。
在虛假的情況下,我指定的瀏覽器不能識別到窗口對象不存在的屬性的對象。爲什麼它返回false而不是拋出一個錯誤,null或undefined?爲什麼會這樣返回false而
if(myAudio = new AudioContext()) or if(myAudio = new Audio()) throw errors?
根據caniuse.com的說法,從IE11和AudioContext開始支持音頻的Edge。你還會期待什麼? –