2016-06-07 60 views
0

我想驗證我的hxtml文件,但是畫布元素存在問題。畫布驗證XHTML

w3c errors

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<canvas id="canvas" width="500" height="250" style="background-color:#303030;" > </canvas> 

沒有人有任何想法如何克服呢?

+1

canvas不是xhtml1的一部分,如果您要使用html5,請使用html5文檔類型 – Kaiido

回答

1

正如評論中所說,使用HTML5的文檔類型(<!DOCTYPE html>)是一個明智的選擇。

但是,無論出於何種原因,它可能會被XHTML 1卡住。其中一個原因可能是,因爲XHTML 1有一個真正的DTD,它支持使用像&nbsp;&thorn;這樣的實體引用。 (XHTML5沒有這樣的奢侈品!)

如果是這樣,你可能已經注意到瀏覽器已經支持像canvas這樣的新元素,所以你不需要做任何事情來使它工作。你所需要做的就是滿足驗證者!

所以這裏的訣竅。您只需將新的元素添加到doctype聲明中,就好像它們是DTD的一部分一樣。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" 
    [ 
    <!ELEMENT canvas EMPTY> 
    <!ATTLIST canvas 
    id   ID    #IMPLIED 
    class  CDATA   #IMPLIED 
    style  CDATA   #IMPLIED 
    title  CDATA   #IMPLIED 
    lang  CDATA   #IMPLIED 
    xml:lang CDATA   #IMPLIED 
    dir   (ltr|rtl)  #IMPLIED 
    onclick  CDATA   #IMPLIED 
    ondblclick CDATA   #IMPLIED 
    onmousedown CDATA   #IMPLIED 
    onmouseup CDATA   #IMPLIED 
    onmouseover CDATA   #IMPLIED 
    onmousemove CDATA   #IMPLIED 
    onmouseout CDATA   #IMPLIED 
    onkeypress CDATA   #IMPLIED 
    onkeydown CDATA   #IMPLIED 
    onkeyup  CDATA   #IMPLIED 
    height  CDATA   #IMPLIED 
    width  CDATA   #IMPLIED 
    > 
    <!ENTITY % InlSpecial.class 
    " | audio | canvas | embed | iframe | img | math | object | svg | video"> 
    ] 
> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us"> 
<head> 
    <title>Element test</title> 
</head> 
<body> 
    <div> 
    <canvas id="canvas" width="500" height="250" style="background-color:#303030;"></canvas> 
    </div> 
</body> 
</html> 

順便說一句,如果你認爲這是一個有點多,記住,你只需要做到這一點,以滿足驗證,這樣可以去除從ATTLIST所有屬性,除了你實際上使用的手機(在你的例子中,id,width,heightstyle)。

+0

有沒有辦法將doctype的擴展名移至單獨文件? – Dmitry

+0

@德米特里據我所知,當然,您可以隨時下載現有的DTD並將這些新元素添加到它,然後使用它,但是它不會正式成爲XHTML 1!所以我害怕這樣做是唯一可行的方式。 –