1

HTML5 元素<datalist>有一个属性data="filename.xml",其中 filename.xml 应如下所示:

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

但是,这似乎还没有实现(尝试过 Chrome、Safari、Firefox、Opera)。有浏览器实现吗?(很快会吗?)

编辑:来源

4

2 回答 2

2

您可以在此处查看对 datalist 的支持:

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

其他人可能会专门提供有关数据属性的信息。

这里有一个polyfill,它还提到了浏览器支持(或缺乏)。

于 2013-06-05T00:58:40.990 回答
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( );
}
于 2013-08-11T05:19:39.580 回答