2011-11-04 76 views
10

我要檢查,如果誰在經營我 網頁瀏覽器能夠處理的「HTML 5佔位符」Modernizr只是一個快速檢查?

我知道我可以添加以下JavaScript檢查:

!Modernizr.input.placeholder 

但它是值得只爲一張支票導入一個圖書館?

也modernizr如何做到這一點對我來說(我的意思是如何實現在封面下)?

回答

10

如果你想檢查placeholder支持,然後你需要做的是;

var placeholderSupport = "placeholder" in document.createElement("input"); 

並回答你的其他問題; 沒有,絕對不會有一點,包括整個的Modernizr庫1號線的JS(Modernizr的是1000+線....轉到數字:))*

*是不是精縮,但概念仍然

+11

澄清的一點是,Modernizr爲研究和開發提供了未壓縮的來源。 Modernizr沒有提供其中的一切縮小版本。鼓勵您創建自定義構建。所以它不是一個線上比較1000+班輪比較。 –

+9

此外Modernizr是邊緣情況的存儲庫。例如,對輸入類型=範圍的測試支持充滿了危險。每次發明自定義測試都是一種結束與UA嗅探一樣脆弱的好方法。人們之前使用HTML5表單輸入測試完成了它們,現在所有的「簡單」檢測都被破壞了。免責聲明:我寫Modernizr,顯然。 :p –

+3

爲了公平起見,在gzip之後,它有87到500個字節的區別:) –

3

It's open-source. Go read it.

Modernizr['input'] = (function(props) { 
    for (var i = 0, len = props.length; i < len; i++) { 
    attrs[ props[i] ] = !!(props[i] in inputElem); 
    } 
    return attrs; 
})(('autocomplete autofocus list placeholder max min ' + 
    'multiple pattern required step').split(' ')); 
+2

誠然,這源是很難理解對於那些不熟悉這個技巧的人來說。 – SLaks

+0

如果以前沒有見過'!!'成語,人們可能會搔頭,但很容易就能得出它的要點,這就是modernizr只是在檢查該屬性是否存在,而不是進一步檢查。 – mquander

+1

@mquander該源代碼稍微超出了我。爲什麼這兩個感嘆號? – Zo72

1

發現這一點:http://davidwalsh.name/html5-placeholder

代碼:

function hasPlaceholderSupport() { 
    var input = document.createElement('input'); 
    return ('placeholder' in input); 
} 

還有一個備用的解決方案,通過點擊鏈接