2014-05-12 128 views

回答

0

雖然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。