2013-06-05 76 views
1

HTML5元素<datalist>有一個屬性data="filename.xml"其中filename.xml中應該是這樣的:任何瀏覽器是否都實現了datalist數據屬性?

<?xml version="1.0"?> 
<select xmlns="http://www.w3.org/1999/xhtml"> 
    <option value="someValue" /> 
    <option value="anotherValue" /> 
</select> 

然而,這似乎尚未實施(試過的Chrome,Safari瀏覽器,火狐,歌劇)。 有沒有瀏覽器實現它? (將任何快?)

編輯:source

+1

什麼'data'屬性?在HTML5 CR,HTML 5.1 Nightly或WHATWG Living HTML中找不到這樣的屬性。這是否是公開提出的建議? –

+0

我想你是對的,我發現這個:lists.whatwg.org/pipermail/help-whatwg.org/2010-November/000679.html –

回答

2

您可以檢查數據列表支持位置:關於數據的具體屬性

http://caniuse.com/#search=datalist

其他人可能提供的信息。

這裏有一個polyfill,它也提到瀏覽器支持(或缺乏)。

+1

......這說明被支持;但我的問題是關於的「data =」屬性。 –

2

我看過相同的文章,並驚訝地發現data屬性不屬於官方規範的一部分,但我猜這是在依靠博客文章中的信息時纔會出現的。

無論如何,我喜歡這個實現,並決定編寫一個JavaScript函數來使它工作。

window.addEventListener('load', function() { 
    var dataList = document.getElementById('myDataList'); 
    getDataList(dataList, dataList.getAttribute('data')); 
}); 

function getDataList(dataList, dataFile) 
{ 
    var http = new XMLHttpRequest(); 
    var options, parser, xml; 

    http.onreadystatechange = function() 
    { 
     if(http.readyState == 4 && http.status == 200) 
     { 
      if(window.DOMParser) 
      { 
       parser = new DOMParser(); 
       xml = parser.parseFromString(http.responseText, "text/xml"); 
      } 
      else 
      { 
       xml = new ActiveXObject("Microsoft.XMLDOM"); 
       xml.async = false; 
       xml.loadXML(http.responseText); 
      } 

      options = xml.getElementsByTagName('option'); 

      for(var i = 0; i < options.length; i++) 
      { 
       var option = document.createElement('option'); 
       option.value = options[i].value; 
       dataList.appendChild(option); 
      } 
     } 
    } 

    http.open("GET", dataFile, true); 
    http.send(); 
} 
相關問題