雖然MS文檔明確說明它們不支持的document.all了,有些程序測試表明IE11「悄悄」仍然確實支持的document.all,顯然。
在IE11,document.all
通過本身,將在適當的功能測試中使用,是「falsy」,這意味着它會失敗的特徵存在測試 - 任何不支持的功能應該。但是,如果你直接使用它,例如document.all('fieldname'),你仍然會得到一個ID爲'fieldname'的元素的引用。
考慮下面的HTML片段,將其在IE11版本11.0.9600.17041測試:
<html>
<script language="javascript">
function testDA(){
if (document.all){
alert('Yes: ' + document.all['foo'].value);
} else {
alert('No: But...' + document.all['foo'].value);
}
var x = document.all['payday'];
x.click();
var y = document.all('payday');
y.click();
document.all('payday').click();
}
function clicked(){
alert('clicked.');
}
</script>
<form>
<button onclick='testDA()'>Button 1</button>
<button id='payday' onclick='clicked()'>Button 2</button>
<input type='text' id='foo' value='I am not here.'>
</form>
</html>
加載這個頁面到IE11,然後單擊「按鈕1」,你會看到一個警告對話框彈出說'不,但是......我不在這裏'。這表明document.all
中的if
正在返回false,跳到else。然而,通過該財產的參考顯然是有效的。
注意,按鈕標記Button 2
和具有「工資日」的ID具有限定的onclick
處理程序,它被編程在testDA
功能通過document.all
經由數組引用和一個函數調用的參考,並在直接引用所引用OP在這裏發佈的方式。在這個測試案例中,所有三個工作 - 在每種情況下,爲按鈕定義的點擊功能都會觸發。
爲了兼容性目的,似乎這個「特徵」是故意假設的(?),但是鑑於MS的文檔明確聲明它「已被刪除」,暗示我可能會隨着KB補丁的消失而消失, OS服務包。警告jscriptor。