如何檢測瀏覽器是否支持CSS屬性顯示:inline-block?檢測瀏覽器支持顯示:內嵌塊
回答
沒有辦法檢測到使用Javascript,因爲它是一個純CSS屬性,它與Javascript中的任何對象或函數無關。我可以告訴你的最好的事情是檢查here是否有很好的兼容性列表,並使用CSS創建解決方法。
按照QuirksMode charts,不支持inline-block
唯一的主流瀏覽器IE6是和7(嗯,他們支持它,但僅適用於具有天然display
類型的inline
元素。)我只是假設它是支持然後通過conditional comments針對IE6/7應用解決方法。
(注:我忽略了Firefox 2中的缺乏支持inline-block
,並假設絕大多數用戶都升級到FF3,但短暫的谷歌搜索沒有任何挖掘的數字備份,高達因人而異。)
但是,如果確定來自JavaScript的支持是您的唯一選擇,那麼您將不得不退回到用戶代理嗅探。 YUI library中的YAHOO.env.ua類是您可以複製和使用的一小段代碼。 (它是BSD許可的,不依賴於YUI庫的其他部分,並且只有大約25-30行沒有評論)
剛剛查看了我網站上的統計數據,他們似乎支持你的假設,即大多數FF用戶已升級到FF 3. IMO決定爲未來設計一個好主意。 – 2009-03-02 04:13:02
那麼,如果你想純粹通過檢查bavhiour的瀏覽器w/javascript代替用戶代理嗅探:
設置測試場景和控制場景。有了,比方說,以下結構:
- 格
- DIV W /內容 「測試」
- DIV W /內容 「test2的」
插入一個拷貝到將兩個內部div設置爲內嵌塊的文檔,並將另一個副本插入到文檔中,並將兩個內部div設置爲阻止。如果瀏覽器支持內嵌塊,則包含的div將具有不同的高度。
備選答案:
您還可以使用到的getComputedStyle看到瀏覽器是如何處理特定元素的CSS。因此,從理論上講,您可以添加一個元素「display:inline-block」,然後檢查computedStyle以查看它是否存活。唯一的問題:IE不支持getComputedStyle。相反,它有currentStyle。我不知道currentStyle的功能是否相同(大概它的功能類似於我們想要的行爲:不考慮「無效」值)。
順便說一句:有a neat way在IE6 +,FF2 +,Opera和WebKit中僅用CSS來實現跨瀏覽器內聯塊。 (不是有效的CSS,但仍然只有CSS。)
Christopher Swasey是相當正確的。
我已經在http://ajh.us/test-inline-block上設置了他的技術jsFiddle演示。
的代碼基本上是:
var div = document.createElement('div');
div.style.cssText = 'display:inline-block';
// need to do this or else document.defaultView doesn't know about it
$('body').append(div);
// that was jQuery. It’s possible to do without, naturally
var results = false;
if (div.currentStyle) {
results = (div.currentStyle['display'] === 'inline-block');
} else if (window.getComputedStyle) {
results = document.defaultView.getComputedStyle(div,null).getPropertyValue('display')=== 'inline-block';
}
//clean up
$(div).remove();
alert('display: inline-block support: '+results);
請注意此相同技術也適用於檢測display: run-in
支持。
- 1. 檢測瀏覽器與Modernizr支持css3
- 2. 如何檢測瀏覽器支持requestFullscreen
- 3. 檢測瀏覽器對RFC5987的支持
- 4. 檢測SSL瀏覽器支持
- 5. 檢測瀏覽器對SVGFragmentIdentifier的支持
- 6. CSS檢測瀏覽器支持javascript
- 7. 爲jQuery Mobile支持檢測瀏覽器
- 8. 檢測瀏覽器是否支持jQueryMobile
- 9. 檢測瀏覽器是否支持vbscript?
- 10. 如何檢測瀏覽器是否支持webkit瀏覽器?
- 11. 檢測短信:瀏覽器支持瀏覽器
- 12. 如何檢測瀏覽器版本和顯示器不支持的消息
- 13. IE9瀏覽器檢測顯示IE8
- 14. 瀏覽器支持
- 15. CSS3佈局模塊瀏覽器支持
- 16. SWT測試是否支持瀏覽器
- 17. 瀏覽器支持WebDriver還是WebDriver支持瀏覽器
- 18. 使用jQuery檢測瀏覽器的CSS選擇器支持
- 19. 檢查瀏覽器.m3u8支持php
- 20. 檢查瀏覽器是否支持SVG
- 21. 檢查瀏覽器是否支持MutationObserver
- 22. 內置函數瀏覽器支持JavaScript
- 23. 內嵌塊的替代方案及其對當前瀏覽器的支持
- 24. 在javascript中檢測SNI(服務器名稱指示)瀏覽器支持
- 25. 如何檢測瀏覽器是否支持itms鏈接?
- 26. 檢測瀏覽器文件輸入支持
- 27. 如何檢測瀏覽器是否支持MJPEG?
- 28. 如何檢測瀏覽器對pageShow和pageHide的支持?
- 29. 如何使用HTMLVideoElement源檢測WebGL texImage2D的瀏覽器支持
- 30. 檢測瀏覽器/設備是否支持雙擊事件
@Alan H .:嗨!我不認識你,但我感謝你對我的回答提出的建設性批評!我也期待着你對這個問題的回答,你向我們展示瞭如何去做。你會告訴我們的方式,對吧? :) – 2011-02-18 01:21:02
http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting實際上,Christopher Swasey提供了一種方法來在下面的答案中用JS來檢測它。至少Alan H.在你的回答中寫下他認爲是問題的東西。沒有那種奢侈,我就會對舊的答案望塵莫及。 – Boldewyn 2011-02-18 07:36:48
@Boldewyn:我會認爲你鏈接到的文章和Christopher Swasey的回答都是變通方法(*好的解決方法,但是變通辦法)。我仍然相信沒有「乾淨」的方式來檢測瀏覽器對特定CSS功能的支持。我也不會把艾倫的評論稱爲奢侈品。 :) – 2011-02-18 14:07:17