document.writeを利用しているテンプレートに警告文が表示されるようになりました

document.writeを利用しているテンプレートに警告文が表示されるようになりました

FC2ブログのあれこれ
2020/06/04
2
vanillaice (Akira)
vanillaice (Akira)
FC2ブログ仕様変更

どこに表示されるかというと テンプレートのダウンロードページ です。みなさんがFC2ブログのテンプレートをDLしようとする際に目に留まるようになっています。

弊テンプレートも対象です

いつから表示されるようになったのか不明です。今回「も」たまたま気づきました(笑)
スクリーンショットに赤い下線を引いていますがこれについては後述します。

何故警告されるのか

書いてあることそのままなんですが、現在のweb標準は HTML5 です。そして document.write というのは JavaScript のメソッドです。

This method has very idiosyncratic behavior. In some cases, this method can affect the state of the HTML parser while the parser is running, resulting in a DOM that does not correspond to the source of the document.

HTML living standard

意訳しますと「document.write」で書き足された内容は、実際にはhtmlに存在しているわけじゃないのに後付け実行で「そこに在る」かのように振る舞うのでhtmlそのものの実行に悪影響を与えることがあるのだ」ということで strongly discouraged (強い否定・否認) の扱いです。

ちょっと日本語圏の方にどのぐらいの感覚で伝わるかわかりませんが、この表現はかなり強めです。「使わない方が良いなぁ」ではなく「使ってはなりませぬ」という感じでしょうか。

各ベンダー(ブラウザリリースメーカー)も排除したい方向なので、もしかすると今後「document.writeは実行しない」というブラウザも出てくるかもしれません。そのため今回FC2ブログ運営が テンプレート内にdocument.writeメソッドを含むもの を対象に警告文を出している、ということですね。

document.writeで書き出しているものは何か

FC2ブログテンプレートに於いてそのほとんどは 新着を示すNEWマークリスト型ページ送り です。もちろん他の用途もあるでしょうが、主にこの2つではないかなぁ、と思います。

弊テンプレートで警告対象になっているもの

IE対応テンプレート です。

FC2ブログNEWマークのdocument.write書き換えコード

FC2ブログNEWマークのdocument.write書き換えコード

「ひとつの方法」です。やり方はそれこそ無数にありますので、現段階でこの方法が良いかもしれないなぁ、というものを提案してみようと思います。...

私自身が「document.writeを書き換えようじゃないか」ということで、コードの提案及び提供を行っているんですが、実は IE対応テンプレートはdocument.writeのまま残してある んですね。何故かというと、IE対応のものはもうそのまま触らない方が無難と結論づけたからです。そして今後何かしら「もうIEでは対処しきれない何か」が起こればその時はMicrosoftのIE11サポート期間が残っていても 全テンプレートをIE非対応にしよう と思っていました。

で、今回のdocument.writeの件は半想定内、半想定外(笑)
webの状況によっては、と思っていましたがFC2がこういった警告を出すとは思っていませんでした。今の段階で「全テンプレートIE非対応」はやはりまだ時期尚早かなぁ、と感じています。なので 修正しました。

警告は人為的な表示のもよう

人為的って表現おかしいですかね (´・ω・`)
ロボットでやってない、という意味です。どうも自動で見分けて表示させているのではない様子。もしかして全テンプレート内容を調査したんでしょうか。もちろん作業にはツールを使うとしても。だとしたらものすごい苦労だったのではないか ( ̄∀ ̄;)

選別をした、ということであれば、テンプレートを修正しただけで解除されることはなく、実際弊テンプレート修正済み40点について今も警告が出ている状態です。再審査が必要なのかどうなのか、何もアナウンスが無いので不明ですがともかく問い合わせ中です。

document.writeを利用しているからといって今すぐどうこうといったことはないんですが、このメソッドを排除する、というのはいずれ行わなければいけませんので、それがFC2には今だ、ってことですよね。

ただ本件はさすがに事前の告知がほしかった です。警告文は人を不安にさせますので無いに越したことはありません。事前の告知と修正猶予期間があれば対応できたデザイナーも居るはずなので (∵`)

とはいえ運営側の決定事項ですし「告知なしで行った」という点以外はこの件について異論はありません。んでもさ、この警告を出すならば このテンプレートはHTML5ではありません という警告も必要じゃなぁい?だって「HTML5の」と出しているわけで、じゃあHTML4.01やXHTMLなら良いわけ?みたいな(笑)

まとめ

最近、再DLを推奨する機会が多くなり、ユーザーさんにとっては非常に手間だろうと思います。けれどもこの流れはしばらく続くと思います。「そういう時期」だからです。
FC2ブログ自体も今「何らかの新しい取り組み」の段階のようですから、その間せわしなくいろいろ動くと思いますが、なんとか追いついていこうと思っています。

テンプレートカスタマイズを頻繁に行う、という方はこの機会に、というかまぁいつでもそうなんですが、カスタマイズ管理 の方法を模索されると良いですね。コメントの付け方だったり、必要な内容をすぐにペーストできるようなファイル管理だとか。自分なりの方法を確立しておくと対応が少しは楽になるかもしれません。

Related post

Comments  2

ぼっちん
2020/06/05 (Fri) 20:15

そう言えば

Akiraさん、こんばんは ^^

そう言えば、今月に入ってから気がついたんですけど、PageSpeed Insights や Lighthouse での測定結果でも document.write() を指摘されるようになりましたね。
スマホでの表示速度が元々遅いサイトでは、より極端な遅延判定を受けるようになってます。
PSI値で90以上あれば、速度判定には殆ど影響ない様子ですが……

Google等で、何処かでそのようなアナウンスってありましたっけ?

vanillaice (Akira)
Akira
2020/06/06 (Sat) 13:40

To ぼっちんさん

ぼっちんさん、こんにちは ('0')/

Googleアナウンス、少なくとも私は記憶に無いですね (´・ω・`)
もう3, 4年前から言われていたことなので、いよいよ「実行しません」段階に来たんでしょうかね。当時は「もしかしたらxx月から使えなくなるかも(当時2017年とかそのぐらい)」と言われていたような(笑)

Googleは大抵「強烈な表示」→「排除」という感じなのでいよいよでしょうか。

コメントに関する注意事項
  • テンプレートに関するご質問は各テンプレート専用記事でのみ受付致します。また、よくある質問をまとめているページも事前にご参照ください。
  • 専門的なご質問の場合、記事内容と明らかに関連の無い内容はお控えください(雑談の場合はその限りではありません)
  • 第三者が不快と感じる内容や論調でのコメントはお控えください(性的,高圧的,暴力的など)