目次を生成するブックマークレットを作った

インストールはリンク先から。

IE対応は諦めた。
リストをネストする部分は、コードは書き直したけど、やっていることは前に作ったものと大体同じ。

目次をクリックしたときの処理を
a.addEventListener(
  'click',
  (function (elm) {
    return function (evt) {
      elm.scrollIntoView();
    };
  })(h),
  false
);
とせずに
a.href = "javascript:document.getElementsByTagName('" + h.nodeName + "').item(" + c[n]++ + ").scrollIntoView()";
とわざわざ遠回りしているのは、メモリリークパターンを避けるため。IEを対象にしないなら気にしなくても良いのかな。
少しラグができてしまうのでやめた。