【ココログ】はてなスターがアーカイブページで動作しない件
この記事で報告した不具合については、2007/07/27に改修されました。
■Internet Explorerで☆が表示されない場合がある問題を修正しました
■Internet Explorerで☆が表示されない場合がある問題を修正しました
参考として記事は消さずに置いておきます。
はてなスターをココログで使おうとすると、アーカイブページでうまく機能しない場合が有る件への暫定対処方法についてです。
はてなスターで出力されるコードをココログのサイドバーのメモ欄等に貼り付けておけば、とりあえずはココログでもはてなスターが動作します。
ところが、どうもアーカイブページ(トップページ・カテゴリー・バックナンバー等)にいくと、星マークは表示されても、うまく機能しない場合があるようです。
そこで調べてみると、このスクリプト、HEAD要素中に次のようなSCRIPT要素を埋めこむのですね。
そこで調べてみると、このスクリプト、HEAD要素中に次のようなSCRIPT要素を埋めこむのですね。
<script src="http://s.hatena.ne.jp/entries.json?uri=http%3A%2F%2Ffuryu.tea-nifty.com%2Fannex%2F2006%2F07%2Fjavascript_b0ea.html&uri= (中略) &&callback=Ten.JSONP.callback&Thu%20Jul%2026%2022:52:56%20UTC+0900%202007" type=text/javascript></script>
uri=...&uri=...のように、そのページ内の全記事のURIを引数として並べる模様。
なので、ココログのアーカイブページのように、沢山の記事が有ると、src="~"の文字制限(ブラウザに依存します)に引っかかってしまうのです。
実際、IE6でスクリプトのデバッグをONにしていると、
実際、IE6でスクリプトのデバッグをONにしていると、
Internet Explorer スクリプト エラーのようなエラーが発生してしまいます。
このページのスクリプトでエラーが発生しました。
ライン: 59
文字: 9
エラー: ポインタが無効です
コード: 0
URL: https://furyu.tea-nifty.com/annex/2006/03/index.html
回避のためには、はてなスターのコードの後ろに、
すると、星が付くのが最初の10件(赤字部分変更で調整可能)になるので、エラーを回避できると思います(もっとも、特に月別バックナンバーで最初の10件にしか星が付けられないというのは変ですけどね。やっぱり根本対策がいるなぁ→はてなアイデアにコメント登録)。
【2007.07.27】
早速対策されましたね。
なお、上記コードについては、赤字部分を0に変更すれば、対策後もそのまま使用できます。
<script type="text/javascript">
Hatena.Star.EntryLoader.loadEntries = function() {
var entries = [];
var c = Hatena.Star.EntryLoader;
var headers = c.getHeaders();
var maxentry = 10;
var numentry = 0;
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
var a = header.getElementsByTagName('a')[0];
var uri ;
var title = '';
if (a) {
uri= a.href;
title = a.innerHTML.replace(/<\/?[^>]+>/gi,'');
}
else {
title = header.innerHTML.replace(/<\/?[^>]+>/gi,'');
header.innerHTML = '<a href="' + location.href + '">' + header.innerHTML + '</a>' ;
uri= location.href;
}
// title = c.scrapeTitle(title);
var cns = header.childNodes;
var cc = c.createCommentContainer();
header.appendChild(cc);
var sc = c.createStarContainer();
header.appendChild(sc);
numentry ++;
if ( maxentry && maxentry<numentry ) break ;
entries.push({
uri: uri,
title: title,
star_container: sc,
comment_container: cc
});
}
return entries;
}
</script>
のようなコードを追加で貼り付けます。Hatena.Star.EntryLoader.loadEntries = function() {
var entries = [];
var c = Hatena.Star.EntryLoader;
var headers = c.getHeaders();
var maxentry = 10;
var numentry = 0;
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
var a = header.getElementsByTagName('a')[0];
var uri ;
var title = '';
if (a) {
uri= a.href;
title = a.innerHTML.replace(/<\/?[^>]+>/gi,'');
}
else {
title = header.innerHTML.replace(/<\/?[^>]+>/gi,'');
header.innerHTML = '<a href="' + location.href + '">' + header.innerHTML + '</a>' ;
uri= location.href;
}
// title = c.scrapeTitle(title);
var cns = header.childNodes;
var cc = c.createCommentContainer();
header.appendChild(cc);
var sc = c.createStarContainer();
header.appendChild(sc);
numentry ++;
if ( maxentry && maxentry<numentry ) break ;
entries.push({
uri: uri,
title: title,
star_container: sc,
comment_container: cc
});
}
return entries;
}
</script>
すると、星が付くのが最初の10件(赤字部分変更で調整可能)になるので、エラーを回避できると思います(もっとも、特に月別バックナンバーで最初の10件にしか星が付けられないというのは変ですけどね。やっぱり根本対策がいるなぁ→はてなアイデアにコメント登録)。
ついでに個別ページでも星が付くようにしてみたつもりですが、どうでしょうね?
↓【2007.07.27】
早速対策されましたね。
なお、上記コードについては、赤字部分を0に変更すれば、対策後もそのまま使用できます。
この記事を書いた後でよく探してみたら、はてなスター日記に、
■1ページにたくさんのエントリーを含むページで☆が表示されない問題を修正されました
という記事がありました。
■1ページにたくさんのエントリーを含むページで☆が表示されない問題を修正されました
という記事がありました。
1ページ内に大量のエントリーを含むページで☆が表示されない場合がある問題がありましたが、この問題をさきほど修正しました。ということなんですが……今日は7/27ですけれど、エラーが出ますよ?
調べてみると確かに、getStarEntriesの中で、urlが"Ten.JSONP.MaxBytes"を越えた長さになると分割呼出を行っているようなコードがあります。
一方、Ten.JSONP.MaxBytesの値は8000です……って、IE6とかだと、これではまだ長すぎるのじゃ?
と思って、Hatena.Star.EntryLoader.loadEntriesの定義に、
まだ何かあるのでしょうかねぇ?
一方、Ten.JSONP.MaxBytesの値は8000です……って、IE6とかだと、これではまだ長すぎるのじゃ?
と思って、Hatena.Star.EntryLoader.loadEntriesの定義に、
if (navigator.userAgent.match(/msie/i) && 3000<Ten.JSONP.MaxBytes) Ten.JSONP.MaxBytes=3000;
のようなのを入れて確かめてみたのですが、確かにエラーは出なくなるのですが、やっぱり★は付きません(Add Starのアイコンは付くのですが、クリックしても反応しません)。まだ何かあるのでしょうかねぇ?
« 【ココログ】メンテ中のトラックバック/コメント欄がメンテ用表示に切り替わらない | トップページ | 【はてなスター】同じURLで複数箇所に★を付けると誤動作する件 »
「ウェブログ・ココログ関連」カテゴリの記事
- 久しぶりの投稿がココログへの苦言というのもなんなのですが……(2019.03.20)
- ココログをTwitterカードに対応させてみる(2016.11.23)
- 【覚書】風柳亭(ココログプロ)をレスポンシブWebデザイン化(Bootstrap3使用)(2015.10.09)
- ココログ用全文検索 - ココログ最強検索を jQuery を使って作り直してみた(既知の不具合の幾つかに対応)(2015.09.01)
- 現在に生きるということ。(2013.01.05)
「パソコン・インターネット」カテゴリの記事
- Twitter 原寸びゅー:PC版ブラウザ用・Twitterの画像閲覧と保存がはかどる拡張機能の紹介(2016.02.12)
- スマートフォンをPC上の音楽を再生するためのリモコンとして使いたい(2016.01.10)
- BIGLOBE光ネクスト(大阪)の通信速度問題 - プロバイダ選びは難しい……(2015.08.13)
- BOOK☆WALKER さんに関して最近経験した不安と不満(2015.08.10)
- 『#鳥獣戯画制作キット』が楽しい(2015.07.01)
« 【ココログ】メンテ中のトラックバック/コメント欄がメンテ用表示に切り替わらない | トップページ | 【はてなスター】同じURLで複数箇所に★を付けると誤動作する件 »
コメント