您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
AutoPagerizeをサポートするボタン
当前为
// ==UserScript== // @name AutoPagerize_Console // @namespace phodra // @description AutoPagerizeをサポートするボタン // @include http://* // @include https://* // @version 2.0 // @grant none // ==/UserScript== (function (){ var ap; var $pagenow, $pagemax; var $pagelist, $pageitem; var scTop, timer; // 初期化 var AP_Init = function() { ap = { 'page': 0, 'seam': [0] }; scTop = document.documentElement.scrollTop; var $header = document.createElement("div"); $header.id = "ap_header"; with( $header.style ) { position = 'fixed'; top = '50px'; right = '0px'; opacity = '0.8'; fontSize = '14px'; userSelect = 'none'; MozUserSelect = 'none'; WebkitUserSelect = 'none'; } document.body.appendChild($header); var $page = document.createElement("div"); $pagenow = document.createElement("span"); $pagemax = document.createElement("span"); $pagenow.innerHTML = $pagemax.innerHTML = "1"; $page.appendChild($pagenow); $page.appendChild( document.createTextNode(" / ")); $page.appendChild($pagemax); with( $page.style ) { cursor = 'pointer'; textAlign = 'right'; backgroundColor = 'white'; padding = '0px 2px'; marginBottom = '5px'; } $page.addEventListener( 'mouseover' , function() { $pagelist.style.display = ''; } ); $page.addEventListener( 'mouseout' , function() { $pagelist.style.display = 'none'; } ); $header.appendChild($page); $pagelist = document.createElement("ol"); with( $pagelist.style ) { backgroundColor = 'white'; listStyleType = 'none'; position = 'absolute'; zIndex = '2'; top = '0px'; right = '0px'; display = 'none'; } $page.appendChild($pagelist); $pageitem = document.createElement("li"); $pageitem.className = "ap_pageitem"; $pageitem.innerHTML = "1"; with( $pageitem.style ) { const MGN = 2; backgroundColor = 'white'; cursor = 'pointer'; textAlign = 'center'; boxSizing = 'border-box'; border = 'outset 1px white'; margin = MGN +'px'; padding = '0px 5px'; minWidth = $page.offsetWidth-MGN*2 + 'px'; } PageItem_AddEvent($pageitem); $pagelist.appendChild($pageitem); const AP_BTN = 'ap_button'; // 移動ボタンのスタイル var $mb_style = document.createElement("style"); $mb_style.setAttribute( 'type', "text/css"); $mb_style.innerHTML = "." + AP_BTN +"{ \ cursor: pointer; \ background-color: white; \ text-align: center; \ position: relative; \ width: 20px; \ margin: 2px 0px 2px auto; \ padding: 2px; \ box-sizing: border-box; \ border: solid 1px white; \ }" + "." + AP_BTN + ":hover{ \ border: outset 1px gray; \ } " + "." + AP_BTN + ":active{ \ border: inset 1px gray; \ }"; document.head.appendChild($mb_style); // 最上部へ移動 var $ptop = document.createElement("div"); $ptop.className = AP_BTN; $ptop.innerHTML = "↑"; $ptop.setAttribute('alt', "Scroll Top"); $ptop.addEventListener( 'click', function() { PageScroll(0); } ); // 最下部へ移動 var $pbtm = document.createElement("div"); $pbtm.className = AP_BTN; $pbtm.innerHTML = "↓"; $pbtm.setAttribute('alt', "Scroll Bottom"); $pbtm.addEventListener( 'click', function() { PageScroll( $(document).height() -$(window).height() ); } ); // AutoPagerizeのページ移動 // 前のページ var $ap_prev = document.createElement("div"); $ap_prev.className = AP_BTN; $ap_prev.innerHTML = "△"; $ap_prev.setAttribute( 'alt', "Scroll Prev Page"); $ap_prev.addEventListener( 'click', function() { PageScroll( scTop==ap.seam[ap.page]? ap.seam[ap.page-1]: ap.seam[ap.page] ); } ); // 次のページ var $ap_next = document.createElement("div"); $ap_next.className = AP_BTN; $ap_next.innerHTML = "▽"; $ap_next.setAttribute( 'alt', "Scroll Next Page"); $ap_next.addEventListener( 'click', function() { PageScroll( ap.page+1<ap.seam.length? ap.seam[ap.page+1]: $(document).height() -$(window).height() ); } ); $header.appendChild($ptop); $header.appendChild($ap_prev); $header.appendChild($ap_next); $header.appendChild($pbtm); // ウィンドウのスクロールが発生した時 window.addEventListener( 'scroll', function() { scTop = document.documentElement.scrollTop; for( var i=ap.seam.length-1; i>=0; i-- ) { if( scTop >= ap.seam[i]-1 ) { if( ap.page != i ) { ap.page = i; $pagenow.innerHTML = i+1; } break; } } } ); }; var PageScroll = function(target, bearing) { clearTimeout(timer); if( target==scTop ) return; if( bearing==null ) bearing = target-scTop; var y = (target-scTop)/5; window.scrollBy( 0, y>0? Math.ceil(y): y<0? Math.floor(y): 0); timer = setTimeout( function() { PageScroll( target, bearing); }, 10 ); if( (bearing<0 && target>=scTop) || (bearing>0 && target<=scTop) ) { window.scrollTo( 0, target); clearTimeout(timer); } }; var PageItem_AddEvent = function($elm) { $elm.addEventListener( 'click', function() { var num = this.innerHTML-1; PageScroll( num>=0 && num<ap.seam.length? ap.seam[num]: 0 ); } ); $elm.addEventListener( 'dblclick', function() { var num = this.innerHTML-2; window.location = num>=0? document.getElementsByClassName("autopagerize_link")[num].href: window.location; } ); }; // ページを継ぎ足した時、継ぎ目の位置を記録する var AP_SeamLine = function() { var $ap_sep = document.getElementsByClassName("autopagerize_page_separator"); var len = $ap_sep.length; var offsety = 0, elm = $ap_sep[len-1]; do { offsety += elm.offsetTop || 0; elm = elm.offsetParent; }while(elm); ap.seam[len] = offsety; $pagemax.innerHTML = len+1; var $new_pageitem = $pageitem.cloneNode(true); $new_pageitem.innerHTML = len+1; PageItem_AddEvent($new_pageitem); $pagelist.appendChild($new_pageitem); }; if( window.AutoPagerize ) { console.log( 'window.AutoPagerize' ); // 初期化 AP_Init(); // 継ぎ足した時 AutoPagerize.addFilter(AP_SeamLine); }else { // document.addEventListener( // 'GM_AutoPagerizeLoaded', // function() // { // AP_Init(); // } // ); document.addEventListener( 'GM_AutoPagerizeNextPageLoaded', function() { if( ap==null ) AP_Init(); AP_SeamLine(); } ); } })();