HomeHome » Webサービス » Twitterのバッジ(Go2web20.net製)をサイトに貼っているサイト管理者の方々へ。

Twitterのバッジ(Go2web20.net製)をサイトに貼っているサイト管理者の方々へ。

このエントリーを含むはてなブックマークはてなブックマーク - Twitterのバッジ(Go2web20.net製)をサイトに貼っているサイト管理者の方々へ。 この記事についてTwitterでつぶやくTwetBuzz - この記事に関するつぶやき  トラックバック(1)  コメント(6)

Twitterのバッジが原因で閲覧者のブラウザ(IE7)が落ちているかもしれない。という早とちり。ごめんなさい!

上記URLで配布しているTwitterバッジ原因で、IE(Internet Explorer)のVer.7でのサイト閲覧時に、ブラウザごと強制終了で落ちる現象が起こっていました。

最初この現象について記事を書いて一時的に公開した時「配布スクリプトに不具合がありそうだ」みたいなことを言っていましたが・・・製作者さま、そして記事を見てパーツを外してしまったサイト管理者の方々、誠に申し訳ありません!僕の記述ミスによって引き起こされたエラーでした。

エラーを起こしてしまった原因を考えてみて、これはアナウンスしておいた方がいいという結論に。

今回のミスですが、海外サイトの配布パーツということもあり、うっかりすると僕でなくとも起こしてしまいそうなエラーだと思いましたので、詳しく解説させて頂きます。まず掲載サイト(Twitter "Follow" Badge for your site / blog)をご覧頂きたいのですが、

Twitter Badge Go2web20.net
(スクリーンショット。クリックで拡大画像を表示します。)

それぞれの設定値を入力して、コードを取得してコピペ!だけで設置できそうなのですが、完成コードのさらに下、最後までよく見るとこんな注意書きがります。

Twitter Badge Notice

3行目に注目。

原文
Paste it on your site template right before the "BODY" end tag(<body>)
翻訳
あなたのサイトのテンプレートの"BODY"終了タグ(<body>)の直前に貼り付けて下さい。

この一文を非常に軽く読んでしまったのがまずかったです。英語で最後の方に書かれているので、人によってはスルーしてしまうのではないでしょうか。

僕の場合は軽く読み過ぎて、<body>終了タグの直前にはアクセス解析のコード30行を挟んでしまい、さらにその前にTwitterバッジのコードを貼っていました。そのためコードの干渉が起き(*1)JavaScriptの実行にエラーが起き、IE7を叩き落とす凶悪サイトになってしまったというわけです。

ちなみにエラーが起きると具体的にどうなるかと言うと、下記が発生してブラウザごと落ちます。

強制終了時の現象
開けません、インターネット サイト http://<Web site>.com. 操作は中断されました。(KB927917)
(Microsoft サポート オンライン、機械翻訳)
"Why do I receive an "Operation aborted" error message when I visit a Web page in Internet Explorer?"
(同、英語原文)

(*1)については頂いたコメントを元に訂正しました。起こったのはコードの干渉ではなく、Twitterバッジのスクリプト位置が原因で起きるエラーです。スクリプトにはbodyコンテナの内容に変更を加える記述があり、スクリプトが子コンテナの位置から親コンテナの内容を変更しようとする事でエラーが発生します。

当WEB人の場合、エラー発生時は下記のような誤った記述になっていました。(ここでは<body></body>が親コンテナとなり、<div></div>が子コンテナとなります。)

<body>
  [親コンテナの内容]
  <div>
    [子コンテナの内容]
    [Twitterバッジのスクリプト]
  </div>
</body>

スクリプトが子コンテナに入っています。子コンテナのスクリプトが親コンテナの内容を変更する形。下記のような構造での記述が正解です。

<body>
  [親コンテナの内容]
  <div>
    [子コンテナ内容]
  </div>
  [Twitterバッジのスクリプト]
</body>

スクリプトが親コンテナに入っています。これなエラーは起きません。


また、落ちない場合でもこの様な状態でした。

JavaScriptエラー通知
IE7のウィンドウ左下に表示される「!」マークを押すと、JavaScriptエラーが発生している旨が通知される。

TwitterバッジのJavaScriptエラー
(スクリーンショット。クリックで拡大画像を表示します。)

正しく貼れば何も問題ありません。

このサイトの右端にも復活しているように、ちゃんと終了<body>タグの直前に貼れていれば、大人しくて控えめでお洒落なとても良い子です(笑)

今回のTwitterバッジですが他のサイトでも使っているところをよく見かけるので、もし同じように使っているサイト管理者様がいらっしゃれば今一度、記述位置のチェックをおすすめします。お騒がせしてしまい誠に申し訳ありませんでした!

教訓、ブログパーツやウィジェットの取り扱いは慎重に行いましょう

追伸1
最初にはてなブックマークのコメントでIE7のエラー落ちを指摘してくれたid:itboy(A Day In The Boy's Life)さん、新たに記事へのコメントも頂きありがとうございました!
追伸2
コメントでご指摘&解説を頂いた名無しさん、ありがとうございました!

このエントリーを含むはてなブックマークはてなブックマーク - Twitterのバッジ(Go2web20.net製)をサイトに貼っているサイト管理者の方々へ。 この記事についてTwitterでつぶやくTwetBuzz - この記事に関するつぶやき  トラックバック(1)  コメント(6)

トラックバック(1)

URL:

ブログが表示されない件 TwitterFollowBadgeが原因だった

知人から、最近当ブログがエラーが出て見れないとのこと。 どうも、IEで見ようとす...

2010年2月13日 14:31

コメント(6)

名無しさん ※返信有り

リンクを張るだけじゃなくて、KB927917は読みましたか?
機械翻訳なので原文を読まないとだめです。

本当の原因は、アクセス解析コードとの干渉ではなくて、
要素の中に、Follow me
バッヂのスクリプトが入っていたことです。
(Googleのキャッシュより確認)

今後、body閉じタグ直前を要求するものがもう1つやってきたら、
どんな順序で配置したら良いのでしょうかw

 名無しさん

» 名無しさんへの返信

なんと。タグが消えてしまいました。


本当の原因は、<div id="container">要素の中に、Follow me
バッヂのスクリプトが入っていたことです。

名無しさん ※返信有り

もう本文が更新されてる!仕事が速いですね。大好きですw

Author Profile Page Souta Nakagamiさん [サイト] [メール]

» 名無しさんへの返信

コメントとご指摘ありがとうございます。そして重ね重ね申し訳ないです!またしても早とちりを・・・非常に面目ないです。
ご指摘の通りで、ドキュメントを精読せずに現状からの推測だけで誤った記述をしてしまいました。問題の内容を再確認し、追記させて頂きました。
大好きとかっ!w 格好は悪かったですがw ありがとうございます!

itboyさん [サイト] ※返信有り

なんか関係ないコメント入れてはてブしてしまってすいませんでした・・・。
面白そうと思って読もうとしたんですがIEが何回も落ちてしまったもので。

そして、わざわざ記事にまで紹介いただきありがとうございました!
Waveの記事のほう、とても参考になりました。
また拝見させていただきます。

Author Profile Page Souta Nakagamiさん [サイト] [メール]

» itboyさんへの返信

今回の件、記事には関係なくてもサイト運営にとっては死活レベルの問題だったので、ご指摘すごく助かりました。それに反省すべき点(早とちりとかうっかりとか・・・w)もついでに身に染みたので、僕自身の良い勉強にもなりました。
あらためまして、ありがとうございます。今後も良い記事が書けるよう頑張ります!

コメント入力フォーム

コメント内容以外は、未入力でも投稿できます。

Google Wave特集!

最近の記事[新着順]

人気の記事[はてな]

月別記事一覧

カテゴリー

タグ

コメント[新着順]

トラックバック[新着順]

About

購読者数・ブックマーク数相関グラフ
購読者数・ブックマーク数相関グラフ

購読者数推移グラフ
購読者数推移グラフ

ブックマーク数推移グラフ
ブックマーク数推移グラフ

Blogopolis
Blogopolis