2012-05-20 48 views
7

我找不到關於「contenteditable」HTML5參數的任何相關信息。我發現,谷歌認爲Plus是Chrome瀏覽器,使用這樣的:如何檢測瀏覽器是否支持contenteditable參數中的「純文本」值?

<div contenteditable="plaintext-only"></div> 

似乎沒有其他的瀏覽器都支持這一點,它只是瀏覽器的專有值。我想在我的項目中使用它。但是,我需要檢測瀏覽器並確定是否支持「純文本」設置。

當然,我只能檢測到Chrome,但可能有其他支持它的瀏覽器(目前我不知道任何),或者其他主流瀏覽器可能在未來開始支持此功能。

因此,我寧願檢測是否支持「純文本」功能,而不僅僅是檢測Chrome瀏覽器。

任何人都可以幫助我嗎?

回答

10

它似乎是webkit-only功能。 spec只允許「true」,「false」和「inherit」作爲屬性的可能值

已提交了一個bug以將明文支持添加到編輯規範中,但有趣的是請求是針對「明文「而不是」純文本「。

編輯: 此代碼可用於檢測支持。 Demo

function supportsPlainText() 
{ 
    var d = document.createElement("div"); 
    try { 
     d.contentEditable="PLAINtext-onLY"; 
    } catch(e) { 
     return false; 
    } 
    return d.contentEditable=="plaintext-only"; 
} 

alert(supportsPlainText()); 

但要記住,這樣做特定瀏覽器的網頁是什麼含鉛我們的IE6的問題。

+0

感謝您提供豐富的答案。如果可能,還可以提供一些JS代碼如何檢測瀏覽器是否支持contenteditable中的「僅純文本」或可能的「純文本」值?這又是一個混亂的HTML5 :-( – Frodik

+1

亂七八糟的是Webkit通過實現標準之外的東西,比如IE以前做的事情。在這種情況下,似乎有可能做功能檢測,因爲其餘瀏覽器在無效值使用,並且該值被標準化爲小寫字母:http://jsfiddle.net/e9t2d/1/但請記住:因爲這是任何規範以外的內容,它可以隨時更改,您將不會注意到 – AlfonsoML

+0

請更新你的答案和小提琴代碼,這樣我就可以接受它,謝謝 – Frodik

9

下面是一個選擇,如果你不想依靠捕捉異常檢測功能:

function supportsPlaintextEditables() { 
    var div = document.createElement('div'); 
    div.setAttribute('contenteditable', 'PLAINTEXT-ONLY'); 

    return div.contentEditable === 'plaintext-only'; 
} 

console.log(supportsPlaintextEditables); 
//-> true/false 

這工作,因爲該值設置爲屬性,而不是屬性不會拋出一個SyntaxError異常,如果'plaintext-only'是無效值,而是將屬性值設置爲默認值'inherit'

獲取屬性設置在套管較低串屬性的結果,所以該屬性值設置爲'PLAINTEXT-ONLY'將導致與值'plaintext-only'一個屬性後(支持/真)或'inherit'(不支持/假)。

+1

很好的答案,幾乎我所做的,只是我一行,只是想找到一個答案,給你的道具。我做了一個[插件](http://stackoverflow.com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active/16043687#16043687 )靈感來自你對[窗口焦點]的回答(http:// stackoverflow。com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active /),並且一直在尋找一種方法來支持ya道具並保持忘記,直到現在。大聲笑。我愛你的答案,我的最愛之一,繼續努力! – SpYk3HH

+0

@ SpYk3HH:爲什麼,非常感謝! :-) –

相關問題