您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
AutoPagerizeをサポートするボタン(シンプルバージョン)
- // ==UserScript==
- // @name AutoPagerize_Console_simple
- // @namespace phodra
- // @description AutoPagerizeをサポートするボタン(シンプルバージョン)
- // @include http://*
- // @include https://*
- // @version 4.03
- // @noframes
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_addStyle
- // @grant GM_getResourceURL
- // @grant GM_getResourceText
- // @resource res_style http://phodra.web.fc2.com/script/AutoPagerize_Console/css_simple403.css
- // ==/UserScript==
- (function (){
- // APが有効なページであるのか
- // 0:無効なページ 1: 2:
- const res_apState = {
- inhibit: 0,
- valid_addon: 1,
- valid_script: 2
- };
- var apState = res_apState.inhibit;
- const res_apValid = {
- enable: 'enable',
- disable: 'disable',
- _N: 'ap_valid'
- };
- var apValid;
- const res_dsptim = {
- always: "always",
- valid: "valid",
- loaded: "loaded",
- _N: "dsptim"
- };
- var dspTim;
- const res_posBasis = 'posBasis';
- var posBasis;
- const res_unit = {
- pxl: 'px',
- pct: '%',
- _N: 'posUnit'
- };
- var unit;
- const res_transUnhover = 'transUnhover';
- var transUnhover;
- const res_posDst = {
- _OPT: 'posDst_opt',
- _SCR: 'posDst_scr',
- _TBL: 'posDst_tbl'
- };
- var posDst = {};
- /// 配置形状
- const res_posFrm = {
- _OPT: 'posFrm_opt',
- up: 'up',
- down: 'down',
- left: 'left',
- right:'right',
- _IOP: 'posFrm_iop',
- noset: 'noset',
- _SCR: 'posFrm_scr',
- slim: 'Slim',
- square: 'Square',
- _TBL: 'posFrm_tbl',
- pile: 'Pile',
- row: 'Row'
- };
- var posFrm = {};
- /// 自動非表示
- const res_posHid = {
- _OPT: 'posHid_opt',
- _SCR: 'posHid_scr',
- _TBL: 'posHid_tbl'
- };
- var posHid = {};
- // スタイル追加
- var apcStyle = GM_addStyle(GM_getResourceText("res_style"));
- // コントロール配置
- /// パネル(最親)
- var $pnl = document.createElement("div");
- $pnl.id = "apc-pnl";
- document.body.appendChild($pnl);
- const APC_BTN = "apc-button";
- ///pnl/ オプショナー
- var $p_opt = document.createElement("div");
- $p_opt.id = "apc-p_opt";
- $pnl.appendChild($p_opt);
- ///pnl/opt/ トグルボタン (enable/disable)
- var $po_tgl = document.createElement("div");
- $po_tgl.id = "apc-po_tgl";
- $po_tgl.className = APC_BTN;
- $p_opt.appendChild($po_tgl);
- ///pnl/opt// トグルボタン 画像
- var $po_tglImg = document.createElement("img");
- $po_tgl.appendChild($po_tglImg);
- ///pnl/opt// コンフィグボタン
- var $po_cfg = document.createElement("div");
- $po_cfg.id = "apc-po_cfg";
- $po_cfg.className = APC_BTN;
- $po_cfg.title = "Open Config";
- $p_opt.appendChild($po_cfg);
- var $po_cfgImg = document.createElement("img");
- $po_cfgImg.setAttribute('alt', "c");
- $po_cfg.appendChild($po_cfgImg);
- ///pnl/ スクローラー
- var $p_scr = document.createElement("div");
- $p_scr.id = "apc-p_scr";
- $pnl.appendChild($p_scr);
- ///pnl/scr/ 最上部へ移動
- var $ps_top = document.createElement("div");
- $ps_top.className = APC_BTN;
- $ps_top.id = "apc-ps_top";
- $ps_top.title = "Move to Top";
- $p_scr.appendChild($ps_top);
- var $ps_topImg = document.createElement("span");
- $ps_topImg.textContent = "|<";
- $ps_top.appendChild($ps_topImg);
- ///pnl/scr/ 最下部へ移動
- var $ps_btm = document.createElement("div");
- $ps_btm.id = "apc-ps_btm";
- $ps_btm.className = APC_BTN;
- $ps_btm.title = "Move to Bottom";
- $p_scr.appendChild($ps_btm);
- var $ps_btmImg = document.createElement("img");
- $ps_btmImg.textContent = ">|";
- $ps_btm.appendChild($ps_btmImg);
- ///pnl/scr/ 前のページ
- var $ps_prv = document.createElement("div");
- $ps_prv.className = APC_BTN;
- $ps_prv.id = "apc-ps_prv";
- $ps_prv.title = "Move to Previous";
- $p_scr.appendChild($ps_prv);
- var $ps_prvImg = document.createElement("img");
- $ps_prvImg.textContent = "<";
- $ps_prv.appendChild($ps_prvImg);
- ///pnl/scr/ 次のページ
- var $ps_nxt = document.createElement("div");
- $ps_nxt.className = APC_BTN;
- $ps_nxt.id = "apc-ps_nxt";
- $ps_nxt.title = "Move to Next";
- $p_scr.appendChild($ps_nxt);
- var $ps_nxtImg = document.createElement("img");
- $ps_nxtImg.textContent = ">";
- $ps_nxt.appendChild($ps_nxtImg);
- ///pnl/ ページテーブル
- var $p_tbl = document.createElement("div");
- $p_tbl.id = "apc-p_tbl";
- ///pnl/tbl/ ページ数表示(summary)
- var $pt_smy = document.createElement("div");
- $pt_smy.id = "apc-pt_smy";
- var $pt_smyNow = document.createElement("span");
- var $pt_smyMax = document.createElement("span");
- var $pt_smyVnc = document.createElement("span");
- $pt_smyNow.textContent = $pt_smyMax.textContent = "1";
- $pt_smyVnc.id = "apc-pt_smyVnc";
- $pt_smy.appendChild($pt_smyNow);
- $pt_smy.appendChild($pt_smyVnc);
- $pt_smy.appendChild($pt_smyMax);
- $p_tbl.appendChild($pt_smy);
- $pnl.appendChild($p_tbl);
- ///pnl/tbl/ ページリスト
- var $pt_lst = document.createElement("ol");
- $pt_lst.id = "apc-pt_lst";
- $pt_lst.style.display = 'none';
- $p_tbl.appendChild($pt_lst);
- ///pnl/tbl/ ページリストアイテム(のもと)
- var $pt_lstItem = document.createElement("li");
- $pt_lstItem.className = "apc-pt_lstItem";
- $pt_lst.appendChild($pt_lstItem);
- // for( var i = 2; i<=10; i++ )
- // {
- // var $new_pageitem = $pt_lstItem.cloneNode(true);
- // PageItem_AddEvent($new_pageitem, "x" + i);
- // $pt_lst.appendChild($new_pageitem);
- // }
- ///pnl/ コンフィグメニュー包含レイヤー
- var $p_menuOuter = document.createElement("div");
- $p_menuOuter.id = "apc-p_menuOuter";
- $p_menuOuter.style.display = 'none';
- document.body.appendChild($p_menuOuter);
- ///pnl/ コンフィグメニュー
- var $p_menu = document.createElement("div");
- $p_menu.id = "apc-p_menu";
- $p_menuOuter.appendChild($p_menu);
- ///pnl/menu/ 表示タイミング(Display Timing)
- var $pm_dsp = document.createElement("h4");
- $pm_dsp.textContent = "Display Timing";
- $pm_dsp.title = "表示するタイミング";
- $p_menu.appendChild($pm_dsp);
- ///pnl/menu/timing/ 常に表示
- var $pmd_alwLbl = document.createElement("label");
- $pmd_alwLbl.className = "apc-pm_item";
- $pmd_alwLbl.for = "apc-pmd_alw";
- $pmd_alwLbl.title = "常に表示";
- $p_menu.appendChild($pmd_alwLbl);
- var $pmd_alw = document.createElement("input");
- $pmd_alw.type = 'radio';
- $pmd_alw.name = res_dsptim._N;
- $pmd_alw.id = "apc-pmd_alw";
- $pmd_alwLbl.appendChild($pmd_alw);
- $pmd_alwLbl.appendChild( document.createTextNode("always"));
- ///pnl/menu/timing/ 二ページ目をロードした時に表示
- var $pmd_lodLbl = document.createElement("label");
- $pmd_lodLbl.className = "apc-pm_item";
- $pmd_lodLbl.for = "apc-pmd_lod";
- $pmd_lodLbl.title = "二ページ目をロードした時に表示";
- $p_menu.appendChild($pmd_lodLbl);
- var $pmd_lod = document.createElement("input");
- $pmd_lod.type = 'radio';
- $pmd_lod.name = res_dsptim._N;
- $pmd_lod.id = "apc-pmd_lod";
- $pmd_lodLbl.appendChild($pmd_lod);
- $pmd_lodLbl.appendChild(document.createTextNode("loaded a 2nd page"));
- ///pnl/menu/timing/ 有効なページでのみ常に表示
- var $pmd_vldLbl = document.createElement("label");
- $pmd_vldLbl.className = "apc-pm_item";
- $pmd_vldLbl.for = "apc-pmd_vld";
- $pmd_vldLbl.title = "AutoPagerizeが有効なページであれば表示";
- $p_menu.appendChild($pmd_vldLbl);
- var $pmd_vld = document.createElement("input");
- $pmd_vld.type = 'radio';
- $pmd_vld.name = res_dsptim._N;
- $pmd_vld.id = "apc-pmd_vld";
- $pmd_vldLbl.appendChild($pmd_vld);
- $pmd_vldLbl.appendChild( document.createTextNode("valid a \"AutoPagerize\""));
- /// 位置設定
- ///pnl/menu/ 位置
- var $pm_pos = document.createElement("h4");
- $pm_pos.textContent = "Position Setting";
- $pm_pos.title = "位置設定";
- $p_menu.appendChild($pm_pos);
- ///pnl/menu/position/ 基準位置
- var $pmp_basLbl = document.createElement("span");
- $pmp_basLbl.className = "apc-pm_item";
- $pmp_basLbl.title = "基準位置";
- $pmp_basLbl.textContent = "basis:";
- $p_menu.appendChild($pmp_basLbl);
- var $pmp_bas = document.createElement("input");
- $pmp_bas.id = "apc-pmp_bas";
- $pmp_bas.type = 'number';
- $pmp_bas.name = res_posBasis;
- $pmp_basLbl.appendChild($pmp_bas);
- ///pnl/menu/position/ 使用単位
- var $pmp_unt = document.createElement("select");
- $pmp_unt.id = "apc-pmp_unt";
- var $pmp_unt_0 = document.createElement("option");
- $pmp_unt_0.textContent = res_unit.pxl;
- $pmp_unt.appendChild($pmp_unt_0);
- var $pmp_unt_1 = document.createElement("option");
- $pmp_unt_1.textContent = res_unit.pct;
- $pmp_unt.appendChild($pmp_unt_1);
- $pmp_basLbl.appendChild($pmp_unt);
- ///pnl/menu/position/ アンホバーなら透過させるか
- var $pmp_tuhLbl= document.createElement("label");
- $pmp_tuhLbl.className = "apc-pm_item";
- $pmp_tuhLbl.for = "apc-pmp_tuh";
- $pmp_tuhLbl.title = "カーソルが乗っていない時、背景を透過";
- $pmp_tuhLbl.textContent = "transparent in unhoving:";
- $p_menu.appendChild($pmp_tuhLbl);
- var $pmp_tuh = document.createElement("input");
- $pmp_tuh.id = "apc-pmp_tuh";
- $pmp_tuh.type = 'checkbox';
- $pmp_tuhLbl.appendChild($pmp_tuh);
- /// 基準位置からの差
- ///pnl/menu/position/ オプショナー
- var $pmp_opt = document.createElement("div");
- $pmp_opt.className = "apc-pmp_box";
- $p_menu.appendChild($pmp_opt);
- var $pmp_optH = document.createElement("h5");
- $pmp_optH.textContent = "Optioner";
- $pmp_opt.appendChild($pmp_optH);
- ///pnl/menu/position/optioner/ 基準位置からの差
- var $pmpo_dstLbl = document.createElement("span");
- $pmpo_dstLbl.className = "apc-pm_item";
- $pmpo_dstLbl.title = "基準位置からの差";
- $pmpo_dstLbl.textContent = "distance:";
- $pmp_opt.appendChild($pmpo_dstLbl);
- var $pmpo_dst = document.createElement("input");
- $pmpo_dst.id = "apc-pmpo_dst";
- $pmpo_dst.type = 'number';
- $pmpo_dst.name = "pmpo_dst";
- $pmpo_dstLbl.appendChild($pmpo_dst);
- $pmpo_dstLbl.appendChild(document.createTextNode("px"));
- ///pnl/menu/position/optioner/ 配置形状
- var $pmpo_frmLbl = document.createElement("span");
- $pmpo_frmLbl.className = "apc-pm_item";
- $pmpo_frmLbl.title = "配置形状";
- $pmpo_frmLbl.textContent = "validAP form:";
- $pmp_opt.appendChild($pmpo_frmLbl);
- var $pmpo_frm = document.createElement("select");
- $pmpo_frm.id = "apc-pmpo_frm";
- $pmpo_frmLbl.appendChild($pmpo_frm);
- var $pmpo_frm_0 = document.createElement("option");
- $pmpo_frm_0.textContent = "Up";
- $pmpo_frm.appendChild($pmpo_frm_0);
- $pmpo_frm_0.value = res_posFrm.up;
- var $pmpo_frm_1 = document.createElement("option");
- $pmpo_frm_1.textContent = "Down";
- $pmpo_frm.appendChild($pmpo_frm_1);
- $pmpo_frm_1.value = res_posFrm.down;
- var $pmpo_frm_2 = document.createElement("option");
- $pmpo_frm_2.textContent = "Left";
- $pmpo_frm.appendChild($pmpo_frm_2);
- $pmpo_frm_2.value = res_posFrm.left;
- // var $pmpo_frm_3 = document.createElement("option");
- // $pmpo_frm_3.textContent = "Right";
- // $pmpo_frm_3.value = res_posFrm.right;
- // $pmpo_frm.appendChild($pmpo_frm_3);
- // $pmpo_frm.value = posFrm.opt;
- ///pnl/menu/position/optioner/ 配置形状afix
- var $pmpo_ifmLbl = document.createElement("span");
- $pmpo_ifmLbl.className = "apc-pm_item";
- $pmpo_ifmLbl.title = "AP対象でないページでの配置形状";
- $pmpo_ifmLbl.textContent = "inhibited form:";
- $pmp_opt.appendChild($pmpo_ifmLbl);
- var $pmpo_ifm = document.createElement("select");
- $pmpo_ifm.id = "apc-pmpo_ifm";
- $pmpo_ifmLbl.appendChild($pmpo_ifm);
- var $pmpo_ifm_0 = document.createElement("option");
- $pmpo_ifm_0.textContent = "No Set";
- $pmpo_ifm.appendChild($pmpo_ifm_0);
- $pmpo_ifm_0.value = res_posFrm.noset;
- var $pmpo_ifm_1 = document.createElement("option");
- $pmpo_ifm_1.textContent = "Up";
- $pmpo_ifm.appendChild($pmpo_ifm_1);
- $pmpo_ifm_1.value = res_posFrm.up;
- var $pmpo_ifm_2 = document.createElement("option");
- $pmpo_ifm_2.textContent = "Down";
- $pmpo_ifm.appendChild($pmpo_ifm_2);
- $pmpo_ifm_2.value = res_posFrm.down;
- var $pmpo_ifm_3 = document.createElement("option");
- $pmpo_ifm_3.textContent = "Left";
- $pmpo_ifm.appendChild($pmpo_ifm_3);
- $pmpo_ifm_3.value = res_posFrm.left;
- ///pnl/menu/position/optioner/ 自動非表示
- var $pmpo_hidLbl= document.createElement("label");
- $pmpo_hidLbl.className = "apc-pm_item";
- $pmpo_hidLbl.for = "apc-pmpo_hid";
- $pmpo_hidLbl.title = "自動非表示";
- $pmpo_hidLbl.textContent = "auto hide:";
- $pmp_opt.appendChild($pmpo_hidLbl);
- var $pmpo_hid = document.createElement("input");
- $pmpo_hid.id = "apc-pmpo_hid";
- $pmpo_hid.type = 'checkbox';
- $pmpo_hidLbl.appendChild($pmpo_hid);
- ///pnl/menu/position/ スクローラー
- var $pmp_scr = document.createElement("div");
- $pmp_scr.className = "apc-pmp_box";
- $p_menu.appendChild($pmp_scr);
- var $pmp_scrH = document.createElement("h5");
- $pmp_scrH.textContent = "Scroller";
- $pmp_scr.appendChild($pmp_scrH);
- ///pnl/menu/position/scroller/ 基準位置からの差
- var $pmps_dstLbl = document.createElement("span");
- $pmps_dstLbl.title = "基準位置からの差";
- $pmps_dstLbl.textContent = "distance:";
- $pmp_scr.appendChild($pmps_dstLbl);
- var $pmps_dst = document.createElement("input");
- $pmps_dst.id = "apc-pmps_dst";
- $pmps_dst.type = 'number';
- $pmps_dst.name = "pmps_dst";
- $pmps_dstLbl.appendChild($pmps_dst);
- $pmps_dstLbl.appendChild(document.createTextNode(" px"));
- ///pnl/menu/position/scroller/ 配置形状
- var $pmps_frmLbl = document.createElement("span");
- $pmps_frmLbl.title = "配置形状";
- $pmps_frmLbl.textContent = "form:";
- $pmp_scr.appendChild($pmps_frmLbl);
- var $pmps_frm = document.createElement("select");
- $pmps_frm.id = "apc-pmps_frm";
- var $pmps_frm_1 = document.createElement("option");
- $pmps_frm_1.textContent = res_posFrm.slim;
- $pmps_frm.appendChild($pmps_frm_1);
- $pmps_frm_1.value = res_posFrm.slim;
- var $pmps_frm_2 = document.createElement("option");
- $pmps_frm_2.textContent = res_posFrm.square;
- $pmps_frm.appendChild($pmps_frm_2);
- $pmps_frm_2.value = res_posFrm.square;
- $pmps_frmLbl.appendChild($pmps_frm);
- ///pnl/menu/position/optioner/ 自動非表示
- var $pmps_hidLbl= document.createElement("label");
- $pmps_hidLbl.for = "apc-pmps_hid";
- $pmps_hidLbl.title = "自動非表示";
- $pmps_hidLbl.textContent = "auto hide:";
- $pmp_scr.appendChild($pmps_hidLbl);
- var $pmps_hid = document.createElement("input");
- $pmps_hid.id = "apc-pmps_hid";
- $pmps_hid.type = 'checkbox';
- $pmps_hidLbl.appendChild($pmps_hid);
- ///pnl/menu/position/ ページテーブル
- var $pmp_tbl = document.createElement("div");
- $pmp_tbl.className = "apc-pmp_box";
- $p_menu.appendChild($pmp_tbl);
- var $pmp_tblH = document.createElement("h5");
- $pmp_tblH.textContent = "Page Table";
- $pmp_tbl.appendChild($pmp_tblH);
- ///pnl/menu/position/pagetable/ 基準位置からの差
- var $pmpt_dstLbl = document.createElement("span");
- $pmpt_dstLbl.title = "基準位置からの差";
- $pmpt_dstLbl.textContent = "distance:";
- $pmp_tbl.appendChild($pmpt_dstLbl);
- var $pmpt_dst = document.createElement("input");
- $pmpt_dst.id = "apc-pmpt_dst";
- $pmpt_dst.type = 'number';
- $pmpt_dst.name = "pmpt_dst";
- $pmpt_dstLbl.appendChild($pmpt_dst);
- $pmpt_dstLbl.appendChild(document.createTextNode(" px"));
- ///pnl/menu/position/pagetable/ 配置形状
- var $pmpt_frmLbl = document.createElement("span");
- $pmpt_frmLbl.title = "配置形状";
- $pmpt_frmLbl.textContent = "form:";
- $pmp_tbl.appendChild($pmpt_frmLbl);
- var $pmpt_frm = document.createElement("select");
- $pmpt_frm.id = "apc-pmpt_frm";
- var $pmpt_frm_1 = document.createElement("option");
- $pmpt_frm_1.textContent = res_posFrm.pile;
- $pmpt_frm.appendChild($pmpt_frm_1);
- $pmpt_frm_1.value = res_posFrm.pile;
- var $pmpt_frm_2 = document.createElement("option");
- $pmpt_frm_2.textContent = res_posFrm.row;
- $pmpt_frm.appendChild($pmpt_frm_2);
- $pmpt_frm_2.value = res_posFrm.row;
- $pmpt_frmLbl.appendChild($pmpt_frm);
- ///pnl/menu/position/pagetable/ 自動非表示
- var $pmpt_hidLbl= document.createElement("label");
- $pmpt_hidLbl.for = "apc-pmpt_hid";
- $pmpt_hidLbl.title = "自動非表示";
- $pmpt_hidLbl.textContent = "auto hide:";
- $pmp_tbl.appendChild($pmpt_hidLbl);
- var $pmpt_hid = document.createElement("input");
- $pmpt_hid.id = "apc-pmpt_hid";
- $pmpt_hid.type = 'checkbox';
- $pmpt_hidLbl.appendChild($pmpt_hid);
- ///pnl/menu/ 閉じるボタン
- var $pm_cls = document.createElement("input");
- $pm_cls.id = "apc-pm_cls";
- $pm_cls.type = 'button';
- $pm_cls.name = "Close";
- $p_menu.appendChild($pm_cls);
- $pm_cls.value = "Close";
- ///pnl/opt// トグル
- var Update_tgl = function(val)
- {
- if( val == res_apValid.enable )
- {
- $po_tgl.setAttribute( 'valid', "e");
- $po_tglImg.setAttribute( 'alt', "E");
- $po_tgl.title = "Toggle AP (Now:Enable)";
- }
- else
- {
- $po_tgl.setAttribute( 'valid', "d");
- $po_tglImg.setAttribute( 'alt', "D");
- $po_tgl.title = "Toggle AP (Now:Disable)";
- }
- return val;
- };
- ///pnl/opt// APイベントをキャプチャー
- document.addEventListener(
- 'AutoPagerizeToggleRequest',
- function(){
- apValid = Update_tgl(
- apValid == res_apValid.enable?
- res_apValid.disable:
- res_apValid.enable);
- GM_setValue( res_apValid._N, apValid);
- }
- );
- document.addEventListener(
- 'AutoPagerizeEnableRequest',
- function(){
- apValid = Update_tgl(res_apValid.enable);
- GM_setValue( res_apValid._N, apValid);
- }
- );
- document.addEventListener(
- 'AutoPagerizeDisableRequest',
- function(){
- apValid = Update_tgl(res_apValid.disable);
- GM_setValue( res_apValid._N, apValid);
- }
- );
- var FireEvent = function(ename)
- {
- var e = document.createEvent('Event');
- e.initEvent( ename
- // apValid == res_apValid.enable?
- // 'AutoPagerizeDisableRequest':
- // 'AutoPagerizeEnableRequest'
- ,true, false);
- return document.dispatchEvent(e);
- };
- ///pnl/opt// トグルボタン クリックでリクエストイベント発火
- $po_tgl.addEventListener(
- 'click' , function()
- {
- return FireEvent('AutoPagerizeToggleRequest');
- }
- );
- var ap = {
- 'page': 0,
- 'seam': [0]
- };
- var scTop = document.documentElement.scrollTop;
- var timer;
- // スクロール関数(jquery:animate:swingと違いキビキビした感じ)
- // target:目的Y位置 bearing:移動方向
- var PageScroll = function(target, bearing)
- {
- clearTimeout(timer);
- if( target==scTop ) return;
- if( bearing==null ) bearing = target-scTop;
- let y = (target-scTop)/5;
- window.scrollBy( 0,
- bearing>0? Math.ceil(y):
- bearing<0? Math.floor(y): 0
- );
- timer = setTimeout(
- function()
- {
- PageScroll( target, bearing);
- }, 10
- );
- if( (bearing<0 && (target>=scTop && target<document.body.clientHeight)) ||
- (bearing>0 && target<=scTop) )
- {
- window.scrollTo( 0, target);
- clearTimeout(timer);
- }
- };
- ///pnl/scr/ 最上部へ移動
- $ps_top.addEventListener(
- 'click', function()
- {
- PageScroll(0);
- }
- );
- ///pnl/scr/ 最下部へ移動
- $ps_btm.addEventListener(
- 'click', function()
- {
- PageScroll( document.body.clientHeight-window.innerHeight );
- }
- );
- ///pnl/scr/ 前のページ
- $ps_prv.addEventListener(
- 'click', function()
- {
- PageScroll( scTop==ap.seam[ap.page]?
- ap.seam[ap.page-1]: ap.seam[ap.page]
- );
- }
- );
- ///pnl/scr/ 次のページ
- $ps_nxt.addEventListener(
- 'click', function()
- {
- PageScroll( ap.page+1<ap.seam.length?
- ap.seam[ap.page+1]:
- document.body.clientHeight-window.innerHeight
- );
- }
- );
- ///pnl/tbl/ ページ数表示(summary)
- // マウスオーバーでリスト表示
- $p_tbl.addEventListener(
- 'mouseover' , function()
- {
- $pt_lst.style.display = 'flex';
- }
- );
- // マウス外すと消える
- $p_tbl.addEventListener(
- 'mouseout' , function()
- {
- $pt_lst.style.display = 'none';
- }
- );
- // 新しいページリストアイテムにイベントを追加
- var PageItem_AddEvent = function($elm, num)
- {
- $elm.textContent = num;
- // クリックでそのページにスクロール
- $elm.addEventListener(
- 'click', function()
- {
- let num = this.textContent-1;
- if( num >= 0 && num < ap.seam.length )
- PageScroll(ap.seam[num]);
- }
- );
- // ダブルクリックでページ移動
- $elm.addEventListener(
- 'dblclick', function()
- {
- let num = this.textContent-2;
- if( num >= 0 )
- document.getElementsByClassName("autopagerize_link")[num].href;
- }
- );
- };
- PageItem_AddEvent($pt_lstItem, 1);
- ///pnl/ コンフィグメニュー
- // バブリング阻止
- $p_menu.addEventListener(
- 'click', function(e)
- {
- e.stopPropagation();
- }
- );
- ///pnl/menu/ 表示タイミング(timing to display)
- var Update_dspTim = function(val)
- {
- switch(val)
- {
- case res_dsptim.valid:
- $pnl.style.display =
- apState == res_apState.inhibit? 'none': 'block';
- break;
- case res_dsptim.loaded:
- $pnl.style.display =
- ap.seam.length == 1? 'none': 'block';
- break;
- case res_dsptim.always:
- default:
- $pnl.style.display = 'block';
- break;
- }
- return val;
- };
- $pmd_alw.addEventListener(
- 'click', function()
- {
- dspTim = Update_dspTim(res_dsptim.always);
- GM_setValue( res_dsptim._N, dspTim);
- }
- );
- $pmd_lod.addEventListener(
- 'click', function()
- {
- dspTim = Update_dspTim(res_dsptim.loaded);
- GM_setValue( res_dsptim._N, dspTim);
- }
- );
- $pmd_vld.addEventListener(
- 'click', function()
- {
- dspTim = Update_dspTim(res_dsptim.valid);
- GM_setValue( res_dsptim._N, dspTim);
- }
- );
- ///pnl/menu/ 位置
- // 再配置
- var Update_dst = function( $$, val)
- {
- val = parseInt(val);
- $$.style.top =
- unit == res_unit.pct?
- "calc( " + val + "px + " + posBasis + "% )":
- posBasis + val + 'px';
- return val;
- };
- var Update_allDest = function()
- {
- Update_dst( $p_opt, posDst.opt);
- Update_dst( $p_scr, posDst.scr);
- Update_dst( $p_tbl, posDst.tbl);
- };
- ///pnl/menu/position/ 基準位置変更
- $pmp_bas.addEventListener(
- 'change' , function()
- {
- posBasis = parseInt(this.value);
- Update_allDest();
- GM_setValue( res_posBasis, posBasis);
- }
- );
- ///pnl/menu/position/ 使用単位
- $pmp_unt.addEventListener(
- 'change' , function()
- {
- unit = this.value;
- Update_allDest();
- GM_setValue( res_unit._N, unit);
- }
- );
- ///pnl/menu/position/optioner/ 自動非表示
- $pmp_tuh.addEventListener(
- 'change' , function()
- {
- transUnhover = this.checked;
- GM_setValue( res_transUnhover, transUnhover);
- }
- );
- ///pnl/menu/position/optioner/ 位置ずらし
- $pmpo_dst.addEventListener(
- 'change' , function()
- {
- posDst.opt = Update_dst( $p_opt, this.value);
- GM_setValue( res_posDst._OPT, posDst.opt);
- }
- );
- ///pnl/menu/position/scroller/ 位置ずらし
- $pmps_dst.addEventListener(
- 'change' , function()
- {
- posDst.scr = Update_dst( $p_scr, this.value);
- GM_setValue( res_posDst._SCR, posDst.scr);
- }
- );
- ///pnl/menu/position/pagetable/ 位置ずらし
- $pmpt_dst.addEventListener(
- 'change' , function()
- {
- posDst.tbl = Update_dst( $p_tbl, this.value);
- GM_setValue( res_posDst._TBL, posDst.tbl);
- }
- );
- ///pnl/menu/position// 配置形状
- var Update_frm = function( $$, val)
- {
- $$.setAttribute( 'form', val);
- return val;
- };
- var Update_inhfrm = function( $$, val)
- {
- $$.setAttribute( 'inhfrm', val);
- return val;
- };
- ///pnl/menu/position/optioner/ 配置形状
- $pmpo_frm.addEventListener(
- 'change' , function()
- {
- posFrm.opt = Update_frm( $p_opt, this.value);
- GM_setValue( res_posFrm._OPT, posFrm.opt);
- }
- );
- $p_opt.setAttribute( 'form', posFrm.opt);
- ///pnl/menu/position/optioner/ 無効時配置形状
- $pmpo_ifm.addEventListener(
- 'change' , function()
- {
- posFrm.iop = Update_inhfrm( $p_opt, this.value);
- GM_setValue( res_posFrm._IOP, posFrm.iop);
- }
- );
- $p_opt.setAttribute( 'inhfrm', posFrm.iop);
- ///pnl/menu/position/scroller/ 配置形状
- $pmps_frm.addEventListener(
- 'change' , function()
- {
- posFrm.scr = Update_frm( $p_scr, this.value);
- GM_setValue( res_posFrm._SCR, posFrm.scr);
- }
- );
- $p_scr.setAttribute( 'form', posFrm.scr);
- ///pnl/menu/position/pagetable/ 配置形状
- $pmpt_frm.addEventListener(
- 'change' , function()
- {
- posFrm.tbl = Update_frm( $p_tbl, this.value);
- GM_setValue( res_posFrm._TBL, posFrm.tbl);
- }
- );
- $p_tbl.setAttribute( 'form', posFrm.tbl);
- ///pnl/menu/position// 自動非表示
- var AutoHide_pop = function()
- {
- $p_opt.setAttribute( 'autohide', 'hoving');
- $p_scr.setAttribute( 'autohide', 'hoving');
- $p_tbl.setAttribute( 'autohide', 'hoving');
- };
- $p_opt.addEventListener(
- 'mouseover', function()
- {
- if( posHid.opt == false )
- AutoHide_pop();
- }
- );
- $po_tgl.addEventListener( 'mouseover', AutoHide_pop);
- $p_scr.addEventListener( 'mouseover', AutoHide_pop);
- $p_tbl.addEventListener( 'mouseover', AutoHide_pop);
- var AutoHide_hiding = function()
- {
- if( posHid.opt == true )
- $p_opt.setAttribute( 'autohide', 'hidden');
- else if(transUnhover)
- $p_opt.setAttribute( 'autohide', 'transparent');
- else $p_opt.removeAttribute( 'autohide');
- if( posHid.scr == true )
- $p_scr.setAttribute( 'autohide', 'hidden');
- else if(transUnhover)
- $p_scr.setAttribute( 'autohide', 'transparent');
- else $p_scr.removeAttribute( 'autohide');
- if( posHid.tbl == true )
- $p_tbl.setAttribute( 'autohide', 'hidden');
- else if(transUnhover)
- $p_tbl.setAttribute( 'autohide', 'transparent');
- else $p_tbl.removeAttribute( 'autohide');
- };
- $pnl.addEventListener(
- 'mouseleave', function()
- {
- if( $p_menuOuter.style.display == 'none' )
- AutoHide_hiding();
- }
- );
- ///pnl/menu/position/optioner/ 自動非表示
- $pmpo_hid.addEventListener(
- 'change' , function()
- {
- posHid.opt = this.checked;
- GM_setValue( res_posHid._OPT, posHid.opt);
- }
- );
- ///pnl/menu/position/scroller/ 自動非表示
- $pmps_hid.addEventListener(
- 'change' , function()
- {
- posHid.scr = this.checked;
- GM_setValue( res_posHid._SCR, posHid.scr);
- }
- );
- ///pnl/menu/position/pagetable/ 自動非表示
- $pmpt_hid.addEventListener(
- 'change' , function()
- {
- posHid.tbl = this.checked;
- GM_setValue( res_posHid._TBL, posHid.tbl);
- }
- );
- /// 最親パネルを領域に合わせる(スキマ対策)
- var FixParentPanel = function()
- {
- let mintop, minlft, maxbtm, maxwid = null;
- $p_opt.style.display = 'flex';
- $p_scr.style.display = 'flex';
- let opt = $p_opt.getClientRects()[0];
- let scr = $p_scr.getClientRects()[0];
- if( opt!=null && scr!=null ){
- mintop = Math.min( opt.top, scr.top);
- maxbtm = Math.max( opt.bottom, scr.bottom);
- minlft = Math.min( opt.left, scr.left);
- maxwid = Math.max( opt.width, scr.width);
- }
- if( apState != res_apState.inhibit )
- {
- $p_tbl.style.display = 'block';
- let tbl = $p_tbl.getClientRects()[0];
- if( tbl != null )
- {
- mintop = Math.min( mintop, tbl.top);
- maxbtm = Math.max( maxbtm, tbl.bottom);
- minlft = Math.min( minlft, tbl.left);
- maxwid = Math.max( maxwid, tbl.width);
- }
- }
- $pnl.style.top = mintop + 'px';
- $pnl.style.left = minlft + 'px';
- $pnl.style.width = maxwid + 'px';
- $pnl.style.height = maxbtm - mintop + 'px';
- $p_opt.style.display = null;
- $p_scr.style.display = null;
- $p_tbl.style.display = null;
- };
- window.addEventListener( 'resize', FixParentPanel);
- // コンフィグ画面表示
- var Open_Config = function()
- {
- $pnl.setAttribute( 'state', 'active');
- $p_menuOuter.style.display = 'flex';
- AutoHide_pop();
- };
- $po_cfg.addEventListener(
- 'click' , function()
- {
- Open_Config();
- }
- );
- /// ボタンが見えなくなった時のため、ショートカットで開けるようにする。
- /// vimperator使用時は、IGNORE ALL KEYSにして操作すること。
- /// Alt + Ctrl + p
- document.addEventListener(
- 'keydown', function(e)
- {
- // (shift && e.shiftKey) && (ctrl && e.ctrlKey) && (alt && e.altKey)
- if( e.altKey && e.ctrlKey && e.keyCode == 80 )
- Open_Config();
- }
- );
- ///pnl/menu/ コンフィグ閉じるボタン
- var Close_Config = function()
- {
- $p_menuOuter.style.display = 'none';
- if( apState == res_apState.inhibit )
- $pnl.removeAttribute('state');
- Update_allDest();
- AutoHide_hiding();
- FixParentPanel();
- };
- $p_menuOuter.addEventListener(
- 'click' , function()
- {
- Close_Config();
- }
- );
- $pm_cls.addEventListener(
- 'click' , function()
- {
- Close_Config();
- }
- );
- // //// AutoPagerizeが有効なページで発火するイベント……のはずだが、全てのページで発火する
- // //// ここでAutoPagerizeDisableRequestなどを送っても意味がなかった
- // document.addEventListener(
- // 'GM_AutoPagerizeLoaded', function(e)
- // {
- // }
- // );
- /// APメッセージバー(アドオン版)かAPアイコン(スクリプト版)が挿入されると、
- /// APが有効なページであるとみなす。
- document.addEventListener(
- 'DOMNodeInserted', function(e)
- {
- if( apState != res_apState.inhibit ) return;
- let $elm = e.target;
- if( $elm.id == "autopagerize_message_bar" )
- apState = res_apState.valid_addon;
- else if( $elm.id == "autopagerize_icon" )
- apState = res_apState.valid_script;
- if( apState != res_apState.inhibit )
- {
- // AutoPagerize有効なページでのみ行う処理
- $pnl.setAttribute( 'state', 'active');
- /// 「有効なページでのみ表示」の場合
- if( dspTim == res_dsptim.valid )
- $pnl.style.display = 'block';
- FixParentPanel();
- $elm.addEventListener(
- 'load', function()
- {
- FireEvent(
- apValid == res_apValid.enable?
- 'AutoPagerizeEnableRequest':
- 'AutoPagerizeDisableRequest'
- );
- }
- );
- }
- }
- );
- // ウィンドウのスクロールが発生した時
- window.addEventListener(
- 'scroll', function()
- {
- scTop = document.documentElement.scrollTop;
- // 現在の位置が何ページ目にあるか調査
- for( let i=ap.seam.length-1; i>=0; i-- )
- {
- if( scTop >= ap.seam[i]-1 )
- {
- if( ap.page != i )
- {
- ap.page = i;
- $pt_smyNow.textContent = i+1;
- FixParentPanel();
- }
- break;
- }
- }
- }
- );
- // ページを継ぎ足した時、継ぎ目の位置を記録する
- var AP_SeamLine = function()
- {
- // 表示タイミングがロード後で、最初の継ぎ足しならパネル表示
- if( ap.seam.length == 1 && dspTim == res_dsptim.loaded )
- $pnl.style.display = 'block';
- // 継ぎ目の絶対位置を取得
- let $ap_sep = document.getElementsByClassName("autopagerize_page_separator");
- let len = $ap_sep.length;
- let offsety = 0, $elm = $ap_sep[len-1];
- /// offsetTop が「親要素からの相対位置」なので、親を遡りながら計測する
- while($elm)
- {
- offsety += $elm.offsetTop || 0;
- $elm = $elm.offsetParent;
- }
- ap.seam[len] = offsety;
- $pt_smyMax.textContent = len+1;
- // ページリストアイテムを追加
- var $new_pageitem = $pt_lstItem.cloneNode(true);
- PageItem_AddEvent($new_pageitem, len+1);
- $pt_lst.appendChild($new_pageitem);
- FixParentPanel();
- };
- if( window.AutoPagerize )
- {
- console.log( 'window.AutoPagerize' );
- // 継ぎ足した時
- AutoPagerize.addFilter(AP_SeamLine);
- }else
- {
- document.addEventListener(
- 'GM_AutoPagerizeNextPageLoaded', function()
- {
- AP_SeamLine();
- }
- );
- }
- // document.addEventListener(
- // 'GM_AutoPagerizeLoaded', function(e)
- // {
- // console.log(e);
- // console.log(e.target);
- // }
- // );
- // document.addEventListener(
- // 'load', function(e)
- // {
- // console.log(e);
- // console.log(e.target);
- // }
- // );
- // document.addEventListener(
- // 'DOMContentLoaded', function(e)
- // {
- // console.log(e);
- // console.log(e.target);
- // }
- // );
- var UpdateState = function()
- {
- Update_tgl(apValid);
- FireEvent(
- apValid == res_apValid.enable?
- 'AutoPagerizeEnableRequest':
- 'AutoPagerizeDisableRequest'
- );
- switch(dspTim)
- {
- case res_dsptim.valid:
- $pmd_vld.checked = true;
- break;
- case res_dsptim.loaded:
- $pmd_lod.checked = true;
- break;
- case res_dsptim.always:
- default:
- $pmd_alw.checked = true;
- break;
- }
- Update_dspTim(dspTim);
- $pmp_bas.value = posBasis;
- $pmp_unt.value = unit;
- $pmp_tuh.checked = transUnhover;
- $pmpo_dst.value = posDst.opt;
- $pmps_dst.value = posDst.scr;
- $pmpt_dst.value = posDst.tbl;
- $pmpo_ifm.value = posFrm.iop;
- $pmpo_frm.value = posFrm.opt;
- $pmps_frm.value = posFrm.scr;
- $pmpt_frm.value = posFrm.tbl;
- $pmpo_hid.checked = posHid.opt;
- $pmps_hid.checked = posHid.scr;
- $pmpt_hid.checked = posHid.tbl;
- Update_inhfrm( $p_opt, posFrm.iop);
- Update_frm( $p_opt, posFrm.opt);
- Update_frm( $p_scr, posFrm.scr);
- Update_frm( $p_tbl, posFrm.tbl);
- Update_allDest();
- AutoHide_hiding();
- FixParentPanel();
- };
- var GetState = function()
- {
- apValid = GM_getValue( res_apValid._N, res_apValid.enable);
- dspTim = GM_getValue( res_dsptim._N, res_dsptim.always);
- posBasis = GM_getValue( res_posBasis, 66);
- unit = GM_getValue( res_unit._N, res_unit.pxl);
- transUnhover = GM_getValue( res_transUnhover, false);
- posDst = {
- opt: GM_getValue(res_posDst._OPT, 0),
- scr: GM_getValue(res_posDst._SCR, 28),
- tbl: GM_getValue(res_posDst._TBL, 118)
- };
- posFrm = {
- opt: GM_getValue( res_posFrm._OPT, res_posFrm.up),
- iop: GM_getValue( res_posFrm._IOP, res_posFrm.noset),
- scr: GM_getValue( res_posFrm._SCR, res_posFrm.slim),
- tbl: GM_getValue( res_posFrm._TBL, res_posFrm.pile)
- };
- posHid = {
- opt: GM_getValue( res_posHid._OPT, false),
- scr: GM_getValue( res_posHid._SCR, false),
- tbl: GM_getValue( res_posHid._TBL, false)
- };
- UpdateState();
- };
- GetState();
- // タブを切り替えた時にステータスを最新に同期する
- document.addEventListener(
- 'visibilitychange', function()
- {
- if( document.visibilityState == 'visible' )
- {
- GetState();
- }
- }
- );
- // Open_Config();
- // var $iframe = document.createElement("iframe");
- // $iframe.id = "apc-iframe";
- // $iframe.style.position = 'fixed';
- // $iframe.style.top = 0;
- // $iframe.style.right = 0;
- // $iframe.style.width = '100%';
- // $iframe.style.height = '100%';
- // $iframe.style.border = 'none';
- // $iframe.style.pointerEvents = 'none';
- // document.body.appendChild($iframe);
- //
- // $iframe.addEventListener(
- // 'load', function()
- // {
- // var $idoc = $iframe.contentDocument;
- //// $idoc.open();
- //// $idoc.write("<html><head></head><body></body></html>");
- //// $idoc.close();
- //// $idoc.writeln("<body></body>");
- // $idoc.body.style.margin = 0;
- // $idoc.body.style.cursor = 'pointer';
- //
- // var $ielm = $idoc.createElement("div");
- // $ielm.style.position = 'fixed';
- // $ielm.style.top = '300px';
- // $ielm.style.width = '40px';
- // $ielm.style.height = '40px';
- // $ielm.style.background = '#cfc';
- // $ielm.style.right = 0;
- // $idoc.body.appendChild($ielm);
- // $ielm.appendChild($idoc.createTextNode("test"));
- //
- // var $ielm2 = $idoc.createElement("select");
- // $ielm2.style.position = 'fixed';
- // $ielm2.style.top = '400px';
- // $ielm2.style.width = '40px';
- // $ielm2.style.height = '40px';
- // $ielm2.style.background = '#cfc';
- // $ielm2.style.right = 0;
- // $ielm2.style.pointerEvents = 'auto';
- // $idoc.body.appendChild($ielm2);
- // console.log($idoc);
- // },false
- // );
- })();