M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2011年9月 6日 19:29

はてなブックマークボタンのJavaScriptがdocument.write使っていてXHTMLで不具合があったのが直った(または9月1日からオプトアウト版はてなブックマークボタンが出ていた件)

このエントリーをはてなブックマークに追加 mixiチェック

ウェブサイトを、厳格にXHTML化したときに(MIMEタイプをapplication/xhtml+xmlとかにしたとき)、document.writeが使えなくなるという問題があるのですが、最近はやりのソーシャルボタンにも、document.writeやそれに類する仕組みを使っていて、動かなくなることがありました。

というわけで、はてなブックマークボタンも、document.writeを使っていて、コンソールにエラーが出る(動くことは動く)ソーシャルボタンの一つだったのですが、今日見たら直っていた、というお話。

はてなブックマークボタンについては、はてなブックマークボタンの作成・設置について [b.hatena.ne.jp] を参照。

昨日くらいまで:http://b.st-hatena.com/js/bookmark_button.js(734行から~)

(function () {
    var domains = 'www.toyokeizai.net member.toyokeizai.net excite.co.jp exblog.jp mainichi.jp jp.msn.com *.jp.msn.com itmedia.co.jp bizmakoto.jp atmarkit.co.jp eetimes.jp ednjapan.cancom-j.com ednjapan.com barks.jp www.asahi.com *.asahi.com jp.techcrunch.com japanese.engadget.com jp.autoblog.com celebrity.aol.jp www.nikkei.com *.nikkeibp.co.jp japan.cnet.com japan.zdnet.com builder.japan.zdnet.com japan.gamespot.com www.re-source.jp www.yomiuri.co.jp groupon.jp';
    var pattern = '^(?:' + domains.replace(/\./g, '\\.').replace(/\*\\\./g, '(?:[^.]+\\.)+').replace(/\s+/g, '|') + ')$';
    if (isLocal || new RegExp(pattern).test(location.hostname)) return;
    if (Math.random() >= 1 / 3) return;
    window.mad_partner_id = '6';
    document.write('<script src="//send.microad.jp/js/conv0000.js"></script>');
})();

今朝9時ぐらい:http://b.st-hatena.com/js/bookmark_button.js(734行から~)

(function () {
    var domains = 'www.toyokeizai.net member.toyokeizai.net excite.co.jp exblog.jp mainichi.jp jp.msn.com *.jp.msn.com itmedia.co.jp bizmakoto.jp atmarkit.co.jp eetimes.jp ednjapan.cancom-j.com ednjapan.com barks.jp www.asahi.com *.asahi.com jp.techcrunch.com japanese.engadget.com jp.autoblog.com celebrity.aol.jp www.nikkei.com *.nikkeibp.co.jp japan.cnet.com japan.zdnet.com builder.japan.zdnet.com japan.gamespot.com www.re-source.jp www.yomiuri.co.jp groupon.jp';
    var pattern = '^(?:' + domains.replace(/\./g, '\\.').replace(/\*\\\./g, '(?:[^.]+\\.)+').replace(/\s+/g, '|') + ')$';
    if (isLocal || !/^https?:$/.test(location.protocol) || new RegExp(pattern).test(location.hostname)) return;
    if (Math.random() >= 1 / 3) return;
    window.mad_partner_id = '6';
    var script = E('script', { type: 'text/javascript', src: '//send.microad.jp/js/conv0000.js' });
    var anchor = document.getElementsByTagName('script')[0] || document.getElementsByTagName('head')[0].firstChild;
    anchor.parentNode.insertBefore(script, anchor);
})();

これで、はてなブックマークボタンはXHTML(MIMEタイプ:application/xhtml+xml)でも動くようになりました!

ていうか、今まで数回に1回エラーが出ていたんですけれどもね(if (Math.random() >= 1 / 3) return; ていうところから、33%の確率でコンバージョン測定用タグが挿入されて、XHTMLではエラーになっていた)。

こんなことなら、9月1日以降からの、オプトアウト版はてなブックマークボタンをもうちょっとアピールしてくれればよかったのに……

次回は、XHTMLでは動かないTwitterのツイートボタンを直してみることをやってみたいと思います。また直っていたりして……

投稿 大野 義貴 [XHTML/XHTML5] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3701

コメントする