「次のページ (リンク自動検出)」のスクリプトを少し改良
デフォルトの方法で検出できない場合に、
数字がついたURLのリンク先を抽出して含まれる数字を元に判断するようにした。
08/02/08
修正&改良した↓
http://d.hatena.ne.jp/nokturnalmortum/20080208#1202421887
以下、古いコード
// derived from All-in-One Gestures created by Marc Boullet //////////////////////////////////////////////////////////////// // OPTIONS // "prev" or "next" // const PREV_NEXT = "prev"; const PREV_NEXT = "next"; // part of string which the link should contain // const KEYWORDS = ["prev", "前へ"]; const KEYWORDS = ["next", "NEXT", "next", "Next", "次", "つづく", "続"]; //////////////////////////////////////////////////////////////// // PROGRAM // first, we search for LINK tags var doc = FireGestures.sourceNode.ownerDocument; var links = doc.getElementsByTagName("link"); for (var i = 0; i < links.length; i++) { if (links[i].href && links[i].hasAttribute("rel") && links[i].getAttribute("rel").toLowerCase().indexOf(PREV_NEXT) == 0) { loadURI(links[i].href); return; } } // second, we search for A tags var regexp = new RegExp("(?:" + KEYWORDS.join("|") + ")", "i"); links = doc.links; for (i = 0; i < links.length; i++) { if (links[i].href && links[i].textContent && links[i].textContent.match(regexp)) { loadURI(links[i].href); return; } } var nlinks = []; var regexp = /\/[^\/\d]*(\d+)[^\/]*$/; for (i = 0; i < links.length; i++) { var url = links[i].href; var m; if (url && (m = url.match(regexp))) { nlinks.push([parseInt(m[1]), url]); } } if (nlinks.length) { nlinks.sort(function(a,b){return (a[0] - b[0]) * (PREV_NEXT == "next" ? -1 : 1 )}); loadURI(nlinks[0][1]); return; }