Let's be more curious.

HTMLのValidation ErrorとWarningをなくす方法

HTMLのValidation ErrorとWarningをなくす方法

はじめに

最近、Nu Html CheckerでブログのHTMLをValidation(バリデーション:検証)したらErrorとWarningがわんさか出てきてビックリしました。😱


アラートの内容を調べてみると、Validation Error(バリデーション エラー)は修正必須でアカンやつ、Validation Warning(バリデーション 警告)は出来るだけ修正をおススメします、というものでした。


今回見つかったErrorやWarningはSEOに大きな影響はないと思いつつも、チェックルールで看破された以上、見て見ぬふりは出来ません。


思い切って直すことを決心したのですが、ちゃちゃっとは修正できず、全記事をリライトするのに約2週間もかかりました。


ValidationのErrorやWarningの修正で悩んでいる方は、参考にご一読下さい。


Nu Html Checkerの使用方法

本題に入る前に、Nu Html Checkerの使用方法を簡単に説明したいと思います。


代表的な使用方法は2つですが、1つはNu Html Checkerのサイトで下記のように条件を設定し解析する方法です。


soureをチェック → adressを選択 → URLを入力 → Checkをクリック



ErrorやWarningがなければ「Document checking completed. No errors or warnings to show.」と表示されます。

Document checking completed. No errors or warnings to show.


ErrorやWarningが見つかったら、その内容が表示され、行番号をクリックするとエラー箇所にジャンプします。

ErrorやWarning


ErrorやWarningが発生している場所はソースコードに色が付き、ピンクがエラーでジャンプした箇所です。

ErrorやWarningが発生している場所はソースコードに色がつく


もう一つはSteve Faulknerさんが作成したブックマークレットを利用する方法です。

About this checker」のページに移動し、「Check serialized DOM of current page」をマウスで左クリックしブックマーク欄にドラッグして登録します。

About this checker


HTMLを解析したいページを表示し、ブックマークをクリックすると解析が実行されます。

HTMLを解析したいページを表示


なお、アドセンスをやっている方は前者の方法をおススメします。

なぜならブックマークレットで解析すると、外部作成のアドセンスのコードも読み取ってしまい、最新のHTMLに準拠してない広告コードは山のようにError表示されるからです。



Validation Error/Warningの解消方法

当ブログで発生したValidation Error/Warningをどのような方法で解消したか説明します。

Bloggerで同じ現象が出ている方は、解消のヒントになれば幸いです。

なお、HTMLの編集に自信が無い方は、必ずバックアップを取って作業されることをおススメします


img要素のエラー

Error: An img element must have an alt attribute, except under certain conditions. For details, consult guidance on providing text alternatives for images.
 訳: img要素は特定の条件を除きalt属性が必要です。詳しくは「画像に代替テキストを提供するためのガイダンス」を参照してください。
 原因:うっかり代替テキストを入れ忘れてました。
 対策:代替テキストを入れました。


Error: Bad value for attribute width on element img: The empty string is not a valid non-negative integer.
 訳: img要素のwidth属性の値が正しくありません: 空の文字列は有効な負でない整数ではありません。
 原因:heightのサイズはCLSの原因になるのでしっかり入れてましたが、widthのサイズは入れても入れなくても問題はなかろうと、数値の設定をさぼってました。
 対策:画像のwidthサイズを設定しました。


Error: Bad value XXX.XX for attribute width on element img: Expected a digit but saw . instead.
 訳:要素imgの属性widthに不正な値XXX.XXがあります: 数字を期待したが、代わりに.が表示されました。
 原因:サイズを縮小してアップした画像のアスペクト比の精度を保つため、良かれと思ってサイズを小数点2位まで設定してました。
 対策:画像のサイズを整数に修正しました。


table要素のエラー

Error: The cellpadding attribute on the table element is obsolete. Use CSS instead.
 訳: table要素のcellpadding属性は廃止されました。代わりにCSSを使用してください。

Error: The border attribute on the table element is obsolete. Use CSS instead.
 訳:table要素のborder属性は廃止されました。代わりにCSSを使用してください。

Error: The width attribute on the col element is obsolete. Use CSS instead.
 訳:col要素のwidth属性は廃止されました。代わりにCSSを使用してください。

Error: Stray end tag col.
 訳: 終了タグの列が外れています。


 原因:tableで表を組むのが面倒臭かったので、スプレッドシートで作った表を安易にそのままコピペしたためでした。
 対策:table要素内に埋め込まれていたCSSは削除しheaderに入れ、正しくタグを整形しました。


iframe関係のエラー

Error: The frameborder attribute on the iframe element is obsolete. Use CSS instead.
 訳: iframe要素のframeborder属性は廃止されました。代わりにCSSを使用してください。

Error: The scrolling attribute on the iframe element is obsolete. Use CSS instead.
 訳: iframe要素のscrolling属性は廃止されました。代わりにCSSを使用してください。

Error: The allowtransparency attribute on the iframe element is obsolete. Use CSS instead.
 訳: iframe要素のallowtransparency属性は廃止されました。代わりにCSSを使用してください。


 原因:YouTubeの動画の埋め込みで表示されるHTMLをそのまま埋め込んでいたためでした。
 対策:エラーになっている属性は使ってないので削除しました。


SVG要素関係のエラー

Error: End tag path did not match the name of the current open element (g).
 訳: 終了タグのパスが、現在開いている要素 (g) の名前と一致しませんでした。

Error: Stray end tag path.
 訳: 終了タグのパスが外れています。

Error: End tag g did not match the name of the current open element (symbol).
 訳: 終了タグ g が現在開いている要素 (シンボル) の名前と一致しませんでした。


 原因:SVGのデータを作成した時、適当に結合させていたためでした。
 対策:重複しているpathを削除し、終了タグを修正しました。結果、データが軽くなって良かったです。


style要素関係のエラー

Error: Element style not allowed as child of element div in this context. (Suppressing further errors from this subtree.)
 訳:このコンテキストでdiv要素の子としてstyle要素が許可されていません。(このサブツリーからのさらなるエラーを抑制します。)
 原因:この記事だけで使うCSSをheaderに追加してCSSが増えるのが嫌だったので、記事の中に<style>~</style>で直接埋め込んでました。
 対策:<link rel='stylesheet' href='https://xxx.css'>で外部読み込みに変更しました。


meta要素関係のエラー

Error: Attribute sizes not allowed on element meta at this point.
 訳:この時点ではmeta要素でサイズ属性が許可されていません。
 原因:良かれと思ってsize='hhh×www'を入れたのがアダとなってました。
 対策:サイズ属性を削除


Warningあれこれ

Warning: The border attribute is obsolete. Consider specifying img { border: 0; } in CSS instead.
 訳:border 属性は廃止されました。 代わりにCSS でimg { border: 0; } の指定を検討してください。
 原因:Bloggerで画像を埋め込むと、自動でが挿入されるためでした。
 対策:border="0"を削除しました。


Warning: The type attribute is unnecessary for JavaScript resources.
 訳:JavaScriptリソースにtype属性は不要です。
 原因:良かれと思って<script>type='text/javascript'を入れてました。 
 対策:type='text/javascript'を削除しました。


Warning: The type attribute for the style element is not needed and should be omitted.
 訳:スタイル要素のtype属性は必要ないため省略してください。
 原因:Bloggerのskinが自動で<style id='page-skin-1' type='text/css'><style>type='text/css'を入れてました。 
 対策:<b:skin><![CDATA[/*&lt;style&gt;&lt;!--/*<b:skin><![CDATA[/*に変更し、<style id='page-skin-1' type='text/css'>をコメント表示になるように誤魔化しました。


Warning: The name attribute is obsolete. Consider putting an id attribute on the nearest container instead.
 訳: name 属性は廃止されました。代わりに最も近いコンテナーにid属性を配置することを検討してください。
 原因:<!--more-->が自動で<span><a name='more'></a></span>に変換されていたためでした。
 対策:<!--more--><!--/*<!--more-->-->に変更し、コメント表示になるように誤魔化しました。
 注意:修正後プレビューでレイアウトが崩れないか確認下さい。もしレイアウトが崩れる場合は、再度<!--/*<!--more-->-->に修正し直して下さい。また、作成ビューで-->が表示されますが、これは公開記事では非表示となります。

なお、<!--more-->を記事に挿入している理由は、下記ブログで解説してますので、気になる方は参考に見て下さい。



まとめ

Bloggerだから発生している現象もあり、解消方法を見つけるのに時間がかかりましたが、気合で何とか修正できました。

管理人は記事を公開する時はPageSpeed Insightsで「ユーザー補助」「おすすめの方法」「SEO」がすべて100ポイントなので、大丈夫だと思い込んでいましたが、これは過信でした。

今後はNu Html CheckerでErrorとWaningがないことをダブルチェックし、ブログの品質を担保したいと思います。


気軽に足跡残してね!

この記事が「気になった・参考になった」と感じた方は、リアクションボタンか、ツイッターで♡いいねを押して、足跡を残して頂けると嬉しいです。

https://t.co/8jaGl3kXQy

ブログのHTMLを頑張って修正してValidation ErrorとWarningを無くすことが出来ました。

備忘録として修正方法を記事にまとめてみたので、HTMLのValidationに関心がある方は、参考にご一読下さい。#HTML #Validation #Blogger

— あトん🤖Web CodingとAV好きなエンジニア (@HeavyPeat) April 23, 2023

それでは今回の記事はこれでおしまい。

Next Post Previous Post
Comment
Please Enter Comments in Light mode
comment url