はてなブログで「続きを読む」記法

2013-10-18 追記: 公式でサポートされましたのでそちらをご利用ください。
長いブログもスッキリと表示。記事を分割する「続きを読む」記法をリリースしました

はてなブログでははてな記法の実装がはてなダイアリーと違うようで、動かない記法がいくつかあります。*1

続きを読む記法 もその内の一つです。
はてなダイアリーで書いていたときは使ったこともなかったんですが、最近立て続けに長めの記事を書いたら、トップページが長くなりすぎて見難くなってしまったので、無理やり使えるようにしてみました。

動作確認のためにこの下に続きを読む記法を書いてみますので、トップページなどから確認してみてください。2012-06-30: 現在はトップページの構成を変えたので確認できません。


(この上)

どうやって実現するかですが、
を記述した部分には以下の HTML が挿入されるようです。

<div class="seemore">

ですので、これ以降の要素をすべて削除し、「続きを読む」のリンクを設置してあげれば OK です。

そこで以下のコードを書きました。これをサイドバーにコピペすれば使えるようになります。

<script>
(function($) {
  if (!(location.pathname === '/' ||
        location.pathname.indexOf('/category/') === 0)) return;

  function pathname(url) {
    return url.replace(/^https?:\/\/[^\/]*|[#?].*$/g, '');
  }

  $('article.entry').each(function() {
    var $seemore = $(this).find('div.entry-content div.seemore');
    if ($seemore.length === 0) return;

    var url = $(this)
      .find('header.entry-header a.entry-title-link').attr('href');

    var $a = $seemore.find('a');
    if ($a.length === 1 && pathname($a.attr('href')) === pathname(url)) return;

    var $tail = $('<a>')
      .addClass('seemore')
      .attr('href', url)
      .text('続きを読む')
      .prependTo($seemore);

    while (!$tail.hasClass('entry-content')) {
      $tail.nextAll().detach();
      $tail = $tail.parent();
    }
  });
})(jQuery);
</script>

https://github.com/m4i/hatenablog-snippets/blob/master/seemore.js


2012-02-13: カテゴリページに対応

*1:この脚注記法も脚注が表示されず、tooltip を読むしかありません。逆に gist 記法のような新しいものもあります。