寫HTML是容易的,但如果某部分出了問題而你找不到錯誤代碼在哪里的時候該如何?這篇文章會介紹一些幫助你查找和修復(fù)HTML中錯誤的工具。
前提: | 熟悉HTML,已完成如HTML入門,HTML文本基礎(chǔ)以及創(chuàng)建超鏈接的學(xué)習(xí)。 |
---|---|
目的: | 學(xué)習(xí)使用調(diào)試工具在HTML中查找問題的基礎(chǔ)知識。 |
在編寫某種代碼時,通常一切都是正常的,直到發(fā)生錯誤的那個可怕時刻——你出錯了,因此你的代碼無效——無論這是不是你想要的。例如下面,當(dāng)我們嘗試用Rust語言去編寫一個簡單的程序時,出現(xiàn)了一個錯誤報告。
這里的錯誤信息比較容易理解 — “unterminated double quote string”(雙引號字符串未閉合)。如果你查看列表,你大概會看到:println!(Hello, world!"),這里邏輯上缺少了一個雙引號。然而,當(dāng)程序變龐大的時候,錯誤信息也會變得更復(fù)雜和更難解釋,即使是簡單的例子,對于不了解Rust語言的人來說也會有點嚇人。
調(diào)試沒有那么可怕 - 編寫和調(diào)試任何編程語言或代碼的關(guān)鍵是熟悉這門語言和工具。
HTML不像Rust語言那么難以理解。在瀏覽器解析和顯示結(jié)果之前,HTML不會被編譯成其他形式(這是解釋而不是編譯)。而HTML的元素語法可以說比像“Rust”,“JavaScript”或“Python”這樣“真正的編程語言”更容易理解。瀏覽器解析HTML比編程語言的運行更寬松,這可以說是好事也是壞事。
寬容的意思是什么呢? 通常當(dāng)你寫錯代碼的時候,你會遇到以下兩種主要類型的錯誤:
HTML本身不會受到語法錯誤的影響,因為瀏覽器是以寬松模式來解析,這意味著即使出現(xiàn)語法錯誤,頁面仍然顯示。瀏覽器通常都有自己的規(guī)則來解析錯誤編寫的標(biāo)記,所以程序仍然會運行,盡管可能不是你預(yù)期的樣子。當(dāng)然這樣仍然會是個問題。
注意:HTML可被寬容的解析,是因為當(dāng)Web首次創(chuàng)建時,就決定允許人們發(fā)布內(nèi)容比確保語法絕對正確更重要。如果從一開始就非常嚴(yán)格,網(wǎng)絡(luò)可能不會像今天這樣流行。
現(xiàn)在是研究HTML代碼的寬松性的時候了。
<h1>HTML debugging examples</h1> <p>What causes errors in HTML? <ul> <li>Unclosed elements: If an element is <strong>not closed properly, then its effect can spread to areas you didn't intend <li>Badly nested elements: Nesting elements properly is also very important for code behaving correctly. <strong>strong <em>strong emphasised?</strong> what is this?</em> <li>Unclosed attributes: Another common source of HTML problems. Let's look at an example: <a href="https://www.mozilla.org/>link to Mozilla homepage</a> </ul>
<strong>
element has no closing tag. This is a bit more problematic, as it isn't easy to tell where the element is supposed to end. In fact, the whole of the rest of the text looks to have been strongly emphasised.<strong>strong <em>strong emphasised?</strong> what is this?</em>
. It is not easy to tell how this has been interpreted, because of the previous problem.href
attribute value has a missing closing double quote. This seems to have caused the biggest problem — the link has not rendered at all.<strong>
element should be closed, so the browser has wrapped each separate block of text with its own strong tag, right down to the bottom of the document!<strong>strong <em>strong emphasised?</em> </strong> <em> what is this?</em>
<li> <strong>Unclosed attributes: Another common source of HTML problems. Let's look at an example: </strong> </li>
所以你可以從上面的例子看到,你真的想確保你的HTML格式正確! 但是如何? 在像上面看到的一個小例子中,很容易通過行搜索并找到錯誤,但是一個巨大的,復(fù)雜的HTML文檔呢?
最好的策略是從通過由W3C創(chuàng)建和維護的標(biāo)記驗證服務(wù)運行HTML頁面開始, 該組織負(fù)責(zé)定義HTML,CSS和其他Web技術(shù)的規(guī)范。 此網(wǎng)頁將HTML文檔作為輸入,通過它,并向您提供一個報告,告訴您HTML的錯誤。
要指定要驗證的HTML,您可以為其指定一個要指向的網(wǎng)址,上傳HTML文件或直接輸入一些HTML代碼。
讓我們試試看,并驗證我們的 example.html"class ="external">示例文檔。
這應(yīng)該給你一個錯誤和其他信息的列表。
驗證器提供的錯誤消息列表通常很有用,有時不太有用; 有一點練習(xí)你可以解決這些如何解決你的代碼。 讓我們通過錯誤消息和它們的意思。 您會看到每條消息都帶有行和列號,以幫助您更輕松地找到錯誤。
li
implied, but there were open elements (2 instances): These messages indicate that an element is open that should be closed. The ending tag is implied, but not actually there. The line/column information points to the first line after the line where the closing tag should really be, but this is a good enough clue to see what is up.strong
: This is really easy to understand — a <strong>
element is unclosed, and the line/column information points right to where it is.strong
violates nesting rules: This points out the incorrectly nested elements, and the line/column information points out where it is.example: <a href="https://www.mozilla.org/>link to Mozilla homepage</a> ? </ul>? </body>?</html>
注意:缺少結(jié)束引號的屬性可能會導(dǎo)致打開的元素,因為文檔的其余部分被解釋為屬性的內(nèi)容。
ul
: This is not very helpful, as the <ul>
element is closed correctly. This error comes up because the <a>
element is not closed, due to the missing closing quote mark.如果你無法弄清楚每個錯誤信息的含義,不要擔(dān)心它 - 一個好主意是一次嘗試修復(fù)一些錯誤,然后嘗試重新驗證你的HTML以顯示剩下的錯誤。 有時固定較早的錯誤也會除去多個其他錯誤消息 - 在多米諾效應(yīng)中,多個錯誤通??赡苡蓡蝹€問題引起。
當(dāng)您在輸出中看到以下橫幅時,您會知道所有錯誤何時修復(fù):
所以我們有它,一個介紹調(diào)試你的HTML,應(yīng)該給你一些有用的技能,當(dāng)你開始調(diào)試CSS,JavaScript和其他類型的代碼在你的職業(yè)生涯中。 這也標(biāo)志著HTML模塊學(xué)習(xí)文章介紹的結(jié)束 - 現(xiàn)在你可以繼續(xù)測試自己與我們的評估:第一個鏈接如下。
更多建議: