MENU
あなたが知りたい芸能ニュースを運営するメディア「芸能マーケティング図書館」です。皆様の芸能における疑問の謎が解決します!

HTMLでdocument.write() はダメで使用しない!javascript で非推奨!使い方は?innerhtmlなど

document.writeは使用しない!非推奨!
  • URLをコピーしました!
document.writeは使用しない!非推奨!
document.writeは使用しない!非推奨!

PageSpeed Insightsでdocument.writeは使用しないとのメッセージが表示されました。非推奨の理由はなぜでしょうか。

HTML ページのスクロールせずに見える範囲に、レンダリングをブロックする外部 JavaScript ファイルへの参照が含まれていることを PageSpeed Insights が検出した場合にトリガーされます。

画面にテキストを表示する document.write です。これはブラウザーのレンダリングに悪影響が出たり、DOMへの影響などを考慮して「強く非推奨」とされています。

JavaScriptの勉強を始めて最初に書いたコードがの方は多いのではないのでしょうか。

目次

HTMLでdocument.write() はダメで使用しない!非推奨!

document.writeが非推奨の理由は?

W3Cはdocument.writeのHTML5での使用を非推奨としていて、HTMLパーサーに影響を与えるようです。

実行しても無視されるか例外が投げられることがあるよーとか、ネットワークの待ち時間に依存などなどもあります。やっぱり使うのはダメそうです。

ブラウザーのレンダリングに悪影響が出たり、DOMへの影響などを考慮して「強く非推奨」とされています。

非同期スクリプトについて詳しくは、パーサー ブロックと非同期 JavaScript をご覧ください。 非同期スクリプトは、指定された順序での実行は保証されません。また、document.write は使用しないでください。

引用元:javascriptを非同期にする

次にMDN document.write()説明ページを読んでみましょう

①非同期の使い勝手が悪いです。deferred または asynchronous のスクリプト内では無視されます

deferred または asynchronous のスクリプト内では無視

②期待通りに処理が動かない可能性があります。

Chrome55からキャッシュされていないHTTP の場合、document.write()を通じて挿入された<script>要素は実行されない

innerhtmlでの使い方!対処・解決方法は?

対処法①:Element.insertAdjacentHTML

利用して対処します。

innerHTMLを高機能にしたようなものと感じました。innerHTMLとは、html要素の中身を変更できるJavaScriptの便利な機能です。

Element.innerHTML = '<p>hello!</p>';

というイコールを使ってコンテンツの挿入を行いますが、これは

Element.insertAdjacentHTML('beforebegin', '<p>hello!</p>');

のように第1引数にElementからの相対位置、第2引数に挿入するコンテンツを指定します。innerHTMLではElement内のコンテンツをまるっと書き換えるだけでしたが、insertAdjacentHTMLでは細かな挿入位置の指定ができるのが魅力です。

対処法②:appendChild & insertBefore

appendChild はノードの一番下にノードを追加できます。

// Elementの子ノードリストの一番下に追加する
const inserted_child = Element.appendChild(child);

insertBeforeは指定した要素の前に、ノードを追加できます。

// Elementの子ノード<h2>の直前に追加する
const inserted_child = Element.insertBefore(child, Element.querySelector('h2'));

nextSiblingを使って直後に追加もできます。

// Elementの子ノード<h2>の直後に追加する
const inserted_child = Element.insertBefore(child, Element.querySelector('h2').nextSibling);
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

More
芸能と音楽をを追求しつづけるメディアです。東京都内に住んでいます。アネックといいます。
子供の頃から芸能・音楽・テレビっ子でした。ですので昔の芸能音楽や芸能の知識は自信があります。好きな芸能ニュースに自分の見解をいれますので意見もいただけますと幸いです。今だけでなく昔の芸能もお伝えして楽しんでいただければと感じます。とくに皆さんが興味をもってもらえるような懐かしい気持ちに浸れるメディアとしたいと考えています。
法人サイトの実績:
①某大手総合商社系メディア/コーポレイトサイト3件でインフラやセキュリティの技術面で要件定義から運用
②渋谷の大手ファッションモールのショッピングサイトのインフラ担当エンジニア


【資格】
Webディレクション資格認定者、Google アナリティクス個人認定資格(GAIQ)など他 IT資格を取得

【お問い合わせ先メールアドレス】
ybox4907@gmail.com

目次

コメント

コメントする

目次