AutoPagerize_Console

AutoPagerizeをサポートするボタン

当前为 2016-04-16 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name AutoPagerize_Console
  3. // @namespace phodra
  4. // @description AutoPagerizeをサポートするボタン
  5. // @include http://*
  6. // @include https://*
  7. // @version 4.00
  8. // @noframes
  9. // @grant GM_getValue
  10. // @grant GM_setValue
  11. // @grant GM_addStyle
  12. // @grant GM_getResourceURL
  13. // @grant GM_getResourceText
  14. // @resource res_style https://www.dropbox.com/pri/get/greasemonkey/AutoPagerize_Console400/AutoPagerize_Console.css?_subject_uid=458281274&w=AABr-ffIgfrYXKmJC3rkyStbtxlGNi4JfQbLRGY--ugYJg
  15. // @resource res_scrAll https://www.dropbox.com/pri/get/greasemonkey/AutoPagerize_Console31/res_scrAll.png?_subject_uid=458281274&w=AAAAezBXOiqhAE4ZoNDge-XOCBciscpYQ5vNmqcAqA5FvA
  16. // @resource res_scrPage https://www.dropbox.com/pri/get/greasemonkey/AutoPagerize_Console31/res_scrPage.png?_subject_uid=458281274&w=AABgYNw_35pHyHSM87srpO0eC7a50hoHf_eogVDgsJ9_HA
  17. // @resource res_tglEnabled https://www.dropbox.com/pri/get/greasemonkey/AutoPagerize_Console31/res_tglEnabled.png?_subject_uid=458281274&w=AADgE11lo7r2Q06jRypOWfQWzKbq0zqYM4cwVIO5mkrBWA
  18. // @resource res_tglDisabled https://www.dropbox.com/pri/get/greasemonkey/AutoPagerize_Console31/res_tglDisabled.png?_subject_uid=458281274&w=AABXFmh_tm9j0xxkVQJ2uS8Z8DsWprjsJZq1MfTpP6HAeA
  19. // @resource res_btnConfig https://www.dropbox.com/pri/get/greasemonkey/AutoPagerize_Console31/res_config.png?_subject_uid=458281274&w=AAAn0Dpdf8O46q18lV_QZa00rbZl0ZxavLmOBdXf0R-LqQ
  20. // ==/UserScript==
  21.  
  22. (function (){
  23. // リソースの定数化
  24. const RES = {
  25. 'scrAll': GM_getResourceURL("res_scrAll"),
  26. 'scrPage': GM_getResourceURL("res_scrPage"),
  27. 'tglEnabled': GM_getResourceURL("res_tglEnabled"),
  28. 'tglDisabled': GM_getResourceURL("res_tglDisabled"),
  29. 'btnConfig': GM_getResourceURL("res_btnConfig"),
  30. 'style': GM_getResourceText("res_style")
  31. };
  32.  
  33. // APが有効なページであるのか
  34. // 0:無効なページ 1: 2:
  35. const res_apState = {
  36. inhibit: 0,
  37. valid_addon: 1,
  38. valid_script: 2
  39. };
  40. var apState = res_apState.inhibit;
  41. const res_apValid = {
  42. enable: 'enable',
  43. disable: 'disable',
  44. _N: 'ap_valid'
  45. };
  46. var apValid;
  47. const res_dsptim = {
  48. always: "always",
  49. valid: "valid",
  50. loaded: "loaded",
  51. _N: "dsptim"
  52. };
  53. var dspTim;
  54. const res_posBasis = 'posBasis';
  55. var posBasis;
  56. const res_unit = {
  57. pxl: 'px',
  58. pct: '%',
  59. _N: 'posUnit'
  60. };
  61. var unit;
  62. const res_transUnhover = 'transUnhover';
  63. var transUnhover;
  64.  
  65. const res_posDst = {
  66. _OPT: 'posDst_opt',
  67. _SCR: 'posDst_scr',
  68. _TBL: 'posDst_tbl'
  69. };
  70. var posDst = {};
  71. /// 配置形状
  72. const res_posFrm = {
  73. _OPT: 'posFrm_opt',
  74. up: 'up',
  75. down: 'down',
  76. left: 'left',
  77. right:'right',
  78. _IOP: 'posFrm_iop',
  79. noset: 'noset',
  80. _SCR: 'posFrm_scr',
  81. slim: 'Slim',
  82. square: 'Square',
  83. _TBL: 'posFrm_tbl',
  84. pile: 'Pile',
  85. row: 'Row'
  86. };
  87. var posFrm = {};
  88. /// 自動非表示
  89. const res_posHid = {
  90. _OPT: 'posHid_opt',
  91. _SCR: 'posHid_scr',
  92. _TBL: 'posHid_tbl'
  93. };
  94. var posHid = {};
  95.  
  96.  
  97. // スタイル追加
  98. var apcStyle = GM_addStyle(RES.style);
  99.  
  100.  
  101.  
  102.  
  103.  
  104. // コントロール配置
  105. /// パネル(最親)
  106. var $pnl = document.createElement("div");
  107. $pnl.id = "apc-pnl";
  108. document.body.appendChild($pnl);
  109. const APC_BTN = "apc-button";
  110.  
  111. ///pnl/ オプショナー
  112. var $p_opt = document.createElement("div");
  113. $p_opt.id = "apc-p_opt";
  114. $pnl.appendChild($p_opt);
  115.  
  116. ///pnl/opt/ トグルボタン (enable/disable)
  117. var $po_tgl = document.createElement("div");
  118. $po_tgl.id = "apc-po_tgl";
  119. $po_tgl.className = APC_BTN;
  120. $p_opt.appendChild($po_tgl);
  121. ///pnl/opt// トグルボタン 画像
  122. var $po_tglImg = document.createElement("img");
  123. $po_tglImg.src = RES.tglEnabled;
  124. $po_tgl.appendChild($po_tglImg);
  125.  
  126. ///pnl/opt// コンフィグボタン
  127. var $po_cfg = document.createElement("div");
  128. $po_cfg.id = "apc-po_cfg";
  129. $po_cfg.className = APC_BTN;
  130. $po_cfg.setAttribute('alt', "c");
  131. $po_cfg.title = "Open Config";
  132. $p_opt.appendChild($po_cfg);
  133. var $po_cfgImg = document.createElement("img");
  134. $po_cfgImg.src = RES.btnConfig;
  135. $po_cfg.appendChild($po_cfgImg);
  136.  
  137.  
  138.  
  139. ///pnl/ スクローラー
  140. var $p_scr = document.createElement("div");
  141. $p_scr.id = "apc-p_scr";
  142. $pnl.appendChild($p_scr);
  143. ///pnl/scr/ 最上部へ移動
  144. var $ps_top = document.createElement("div");
  145. $ps_top.className = APC_BTN;
  146. $ps_top.id = "apc-ps_top";
  147. $ps_top.setAttribute('alt', "↑");
  148. $ps_top.title = "Move to Top";
  149. $p_scr.appendChild($ps_top);
  150. var $ps_topImg = document.createElement("img");
  151. $ps_topImg.src = RES.scrAll;
  152. $ps_top.appendChild($ps_topImg);
  153. ///pnl/scr/ 最下部へ移動
  154. var $ps_btm = document.createElement("div");
  155. $ps_btm.id = "apc-ps_btm";
  156. $ps_btm.className = APC_BTN;
  157. $ps_btm.setAttribute('alt', "↓");
  158. $ps_btm.title = "Move to Bottom";
  159. $p_scr.appendChild($ps_btm);
  160. var $ps_btmImg = document.createElement("img");
  161. $ps_btmImg.src = RES.scrAll;
  162. $ps_btm.appendChild($ps_btmImg);
  163. ///pnl/scr/ 前のページ
  164. var $ps_prv = document.createElement("div");
  165. $ps_prv.className = APC_BTN;
  166. $ps_prv.id = "apc-ps_prv";
  167. $ps_prv.setAttribute('alt', "△");
  168. $ps_prv.title = "Move to Previous";
  169. $p_scr.appendChild($ps_prv);
  170. var $ps_prvImg = document.createElement("img");
  171. $ps_prvImg.src = RES.scrPage;
  172. $ps_prv.appendChild($ps_prvImg);
  173. ///pnl/scr/ 次のページ
  174. var $ps_nxt = document.createElement("div");
  175. $ps_nxt.className = APC_BTN;
  176. $ps_nxt.id = "apc-ps_nxt";
  177. $ps_nxt.setAttribute('alt', "▽");
  178. $ps_nxt.title = "Move to Next";
  179. $p_scr.appendChild($ps_nxt);
  180. var $ps_nxtImg = document.createElement("img");
  181. $ps_nxtImg.src = RES.scrPage;
  182. $ps_nxt.appendChild($ps_nxtImg);
  183.  
  184.  
  185.  
  186. ///pnl/ ページテーブル
  187. var $p_tbl = document.createElement("div");
  188. $p_tbl.id = "apc-p_tbl";
  189. ///pnl/tbl/ ページ数表示(summary)
  190. var $pt_smy = document.createElement("div");
  191. $pt_smy.id = "apc-pt_smy";
  192. var $pt_smyNow = document.createElement("span");
  193. var $pt_smyMax = document.createElement("span");
  194. var $pt_smyVnc = document.createElement("span");
  195. $pt_smyNow.textContent = $pt_smyMax.textContent = "1";
  196. $pt_smyVnc.id = "apc-pt_smyVnc";
  197. $pt_smy.appendChild($pt_smyNow);
  198. $pt_smy.appendChild($pt_smyVnc);
  199. $pt_smy.appendChild($pt_smyMax);
  200. $p_tbl.appendChild($pt_smy);
  201. $pnl.appendChild($p_tbl);
  202.  
  203. ///pnl/tbl/ ページリスト
  204. var $pt_lst = document.createElement("ol");
  205. $pt_lst.id = "apc-pt_lst";
  206. $pt_lst.style.display = 'none';
  207. $p_tbl.appendChild($pt_lst);
  208. ///pnl/tbl/ ページリストアイテム(のもと)
  209. var $pt_lstItem = document.createElement("li");
  210. $pt_lstItem.className = "apc-pt_lstItem";
  211. $pt_lst.appendChild($pt_lstItem);
  212.  
  213. // for( var i = 2; i<=10; i++ )
  214. // {
  215. // var $new_pageitem = $pt_lstItem.cloneNode(true);
  216. // PageItem_AddEvent($new_pageitem, "x" + i);
  217. // $pt_lst.appendChild($new_pageitem);
  218. // }
  219.  
  220.  
  221.  
  222.  
  223.  
  224. ///pnl/ コンフィグメニュー包含レイヤー
  225. var $p_menuOuter = document.createElement("div");
  226. $p_menuOuter.id = "apc-p_menuOuter";
  227. $p_menuOuter.style.display = 'none';
  228. document.body.appendChild($p_menuOuter);
  229.  
  230. ///pnl/ コンフィグメニュー
  231. var $p_menu = document.createElement("div");
  232. $p_menu.id = "apc-p_menu";
  233. $p_menuOuter.appendChild($p_menu);
  234.  
  235. ///pnl/menu/ 表示タイミング(Display Timing)
  236. var $pm_dsp = document.createElement("h4");
  237. $pm_dsp.textContent = "Display Timing";
  238. $pm_dsp.title = "表示するタイミング";
  239. $p_menu.appendChild($pm_dsp);
  240. ///pnl/menu/timing/ 常に表示
  241. var $pmd_alwLbl = document.createElement("label");
  242. $pmd_alwLbl.className = "apc-pm_item";
  243. $pmd_alwLbl.for = "apc-pmd_alw";
  244. $pmd_alwLbl.title = "常に表示";
  245. $p_menu.appendChild($pmd_alwLbl);
  246. var $pmd_alw = document.createElement("input");
  247. $pmd_alw.type = 'radio';
  248. $pmd_alw.name = res_dsptim._N;
  249. $pmd_alw.id = "apc-pmd_alw";
  250. $pmd_alwLbl.appendChild($pmd_alw);
  251. $pmd_alwLbl.appendChild( document.createTextNode("always"));
  252. ///pnl/menu/timing/ 二ページ目をロードした時に表示
  253. var $pmd_lodLbl = document.createElement("label");
  254. $pmd_lodLbl.className = "apc-pm_item";
  255. $pmd_lodLbl.for = "apc-pmd_lod";
  256. $pmd_lodLbl.title = "二ページ目をロードした時に表示";
  257. $p_menu.appendChild($pmd_lodLbl);
  258. var $pmd_lod = document.createElement("input");
  259. $pmd_lod.type = 'radio';
  260. $pmd_lod.name = res_dsptim._N;
  261. $pmd_lod.id = "apc-pmd_lod";
  262. $pmd_lodLbl.appendChild($pmd_lod);
  263. $pmd_lodLbl.appendChild(document.createTextNode("loaded a 2nd page"));
  264. ///pnl/menu/timing/ 有効なページでのみ常に表示
  265. var $pmd_vldLbl = document.createElement("label");
  266. $pmd_vldLbl.className = "apc-pm_item";
  267. $pmd_vldLbl.for = "apc-pmd_vld";
  268. $pmd_vldLbl.title = "AutoPagerizeが有効なページであれば表示";
  269. $p_menu.appendChild($pmd_vldLbl);
  270. var $pmd_vld = document.createElement("input");
  271. $pmd_vld.type = 'radio';
  272. $pmd_vld.name = res_dsptim._N;
  273. $pmd_vld.id = "apc-pmd_vld";
  274. $pmd_vldLbl.appendChild($pmd_vld);
  275. $pmd_vldLbl.appendChild( document.createTextNode("valid a \"AutoPagerize\""));
  276.  
  277. /// 位置設定
  278. ///pnl/menu/ 位置
  279. var $pm_pos = document.createElement("h4");
  280. $pm_pos.textContent = "Position Setting";
  281. $pm_pos.title = "位置設定";
  282. $p_menu.appendChild($pm_pos);
  283. ///pnl/menu/position/ 基準位置
  284. var $pmp_basLbl = document.createElement("span");
  285. $pmp_basLbl.className = "apc-pm_item";
  286. $pmp_basLbl.title = "基準位置";
  287. $pmp_basLbl.textContent = "basis:";
  288. $p_menu.appendChild($pmp_basLbl);
  289. var $pmp_bas = document.createElement("input");
  290. $pmp_bas.id = "apc-pmp_bas";
  291. $pmp_bas.type = 'number';
  292. $pmp_bas.name = res_posBasis;
  293. $pmp_basLbl.appendChild($pmp_bas);
  294. ///pnl/menu/position/ 使用単位
  295. var $pmp_unt = document.createElement("select");
  296. $pmp_unt.id = "apc-pmp_unt";
  297. var $pmp_unt_0 = document.createElement("option");
  298. $pmp_unt_0.textContent = res_unit.pxl;
  299. $pmp_unt.appendChild($pmp_unt_0);
  300. var $pmp_unt_1 = document.createElement("option");
  301. $pmp_unt_1.textContent = res_unit.pct;
  302. $pmp_unt.appendChild($pmp_unt_1);
  303. $pmp_basLbl.appendChild($pmp_unt);
  304. ///pnl/menu/position/ アンホバーなら透過させるか
  305. var $pmp_tuhLbl= document.createElement("label");
  306. $pmp_tuhLbl.className = "apc-pm_item";
  307. $pmp_tuhLbl.for = "apc-pmp_tuh";
  308. $pmp_tuhLbl.title = "カーソルが乗っていない時、背景を透過";
  309. $pmp_tuhLbl.textContent = "transparent in unhoving:";
  310. $p_menu.appendChild($pmp_tuhLbl);
  311. var $pmp_tuh = document.createElement("input");
  312. $pmp_tuh.id = "apc-pmp_tuh";
  313. $pmp_tuh.type = 'checkbox';
  314. $pmp_tuhLbl.appendChild($pmp_tuh);
  315. /// 基準位置からの差
  316. ///pnl/menu/position/ オプショナー
  317. var $pmp_opt = document.createElement("div");
  318. $pmp_opt.className = "apc-pmp_box";
  319. $p_menu.appendChild($pmp_opt);
  320. var $pmp_optH = document.createElement("h5");
  321. $pmp_optH.textContent = "Optioner";
  322. $pmp_opt.appendChild($pmp_optH);
  323. ///pnl/menu/position/optioner/ 基準位置からの差
  324. var $pmpo_dstLbl = document.createElement("span");
  325. $pmpo_dstLbl.className = "apc-pm_item";
  326. $pmpo_dstLbl.title = "基準位置からの差";
  327. $pmpo_dstLbl.textContent = "distance:";
  328. $pmp_opt.appendChild($pmpo_dstLbl);
  329. var $pmpo_dst = document.createElement("input");
  330. $pmpo_dst.id = "apc-pmpo_dst";
  331. $pmpo_dst.type = 'number';
  332. $pmpo_dst.name = "pmpo_dst";
  333. $pmpo_dstLbl.appendChild($pmpo_dst);
  334. $pmpo_dstLbl.appendChild(document.createTextNode("px"));
  335. ///pnl/menu/position/optioner/ 配置形状
  336. var $pmpo_frmLbl = document.createElement("span");
  337. $pmpo_frmLbl.className = "apc-pm_item";
  338. $pmpo_frmLbl.title = "配置形状";
  339. $pmpo_frmLbl.textContent = "validAP form:";
  340. $pmp_opt.appendChild($pmpo_frmLbl);
  341. var $pmpo_frm = document.createElement("select");
  342. $pmpo_frm.id = "apc-pmpo_frm";
  343. $pmpo_frmLbl.appendChild($pmpo_frm);
  344. var $pmpo_frm_0 = document.createElement("option");
  345. $pmpo_frm_0.textContent = "Up";
  346. $pmpo_frm.appendChild($pmpo_frm_0);
  347. $pmpo_frm_0.value = res_posFrm.up;
  348. var $pmpo_frm_1 = document.createElement("option");
  349. $pmpo_frm_1.textContent = "Down";
  350. $pmpo_frm.appendChild($pmpo_frm_1);
  351. $pmpo_frm_1.value = res_posFrm.down;
  352. var $pmpo_frm_2 = document.createElement("option");
  353. $pmpo_frm_2.textContent = "Left";
  354. $pmpo_frm.appendChild($pmpo_frm_2);
  355. $pmpo_frm_2.value = res_posFrm.left;
  356. ///pnl/menu/position/optioner/ 配置形状afix
  357. var $pmpo_ifmLbl = document.createElement("span");
  358. $pmpo_ifmLbl.className = "apc-pm_item";
  359. $pmpo_ifmLbl.title = "AP対象でないページでの配置形状";
  360. $pmpo_ifmLbl.textContent = "inhibited form:";
  361. $pmp_opt.appendChild($pmpo_ifmLbl);
  362. var $pmpo_ifm = document.createElement("select");
  363. $pmpo_ifm.id = "apc-pmpo_ifm";
  364. $pmpo_ifmLbl.appendChild($pmpo_ifm);
  365. var $pmpo_ifm_0 = document.createElement("option");
  366. $pmpo_ifm_0.textContent = "No Set";
  367. $pmpo_ifm.appendChild($pmpo_ifm_0);
  368. $pmpo_ifm_0.value = res_posFrm.noset;
  369. var $pmpo_ifm_1 = document.createElement("option");
  370. $pmpo_ifm_1.textContent = "Up";
  371. $pmpo_ifm.appendChild($pmpo_ifm_1);
  372. $pmpo_ifm_1.value = res_posFrm.up;
  373. var $pmpo_ifm_2 = document.createElement("option");
  374. $pmpo_ifm_2.textContent = "Down";
  375. $pmpo_ifm.appendChild($pmpo_ifm_2);
  376. $pmpo_ifm_2.value = res_posFrm.down;
  377. var $pmpo_ifm_3 = document.createElement("option");
  378. $pmpo_ifm_3.textContent = "Left";
  379. $pmpo_ifm.appendChild($pmpo_ifm_3);
  380. $pmpo_ifm_3.value = res_posFrm.left;
  381. ///pnl/menu/position/optioner/ 自動非表示
  382. var $pmpo_hidLbl= document.createElement("label");
  383. $pmpo_hidLbl.className = "apc-pm_item";
  384. $pmpo_hidLbl.for = "apc-pmpo_hid";
  385. $pmpo_hidLbl.title = "自動非表示";
  386. $pmpo_hidLbl.textContent = "auto hide:";
  387. $pmp_opt.appendChild($pmpo_hidLbl);
  388. var $pmpo_hid = document.createElement("input");
  389. $pmpo_hid.id = "apc-pmpo_hid";
  390. $pmpo_hid.type = 'checkbox';
  391. $pmpo_hidLbl.appendChild($pmpo_hid);
  392. ///pnl/menu/position/ スクローラー
  393. var $pmp_scr = document.createElement("div");
  394. $pmp_scr.className = "apc-pmp_box";
  395. $p_menu.appendChild($pmp_scr);
  396. var $pmp_scrH = document.createElement("h5");
  397. $pmp_scrH.textContent = "Scroller";
  398. $pmp_scr.appendChild($pmp_scrH);
  399. ///pnl/menu/position/scroller/ 基準位置からの差
  400. var $pmps_dstLbl = document.createElement("span");
  401. $pmps_dstLbl.title = "基準位置からの差";
  402. $pmps_dstLbl.textContent = "distance:";
  403. $pmp_scr.appendChild($pmps_dstLbl);
  404. var $pmps_dst = document.createElement("input");
  405. $pmps_dst.id = "apc-pmps_dst";
  406. $pmps_dst.type = 'number';
  407. $pmps_dst.name = "pmps_dst";
  408. $pmps_dstLbl.appendChild($pmps_dst);
  409. $pmps_dstLbl.appendChild(document.createTextNode(" px"));
  410. ///pnl/menu/position/scroller/ 配置形状
  411. var $pmps_frmLbl = document.createElement("span");
  412. $pmps_frmLbl.title = "配置形状";
  413. $pmps_frmLbl.textContent = "form:";
  414. $pmp_scr.appendChild($pmps_frmLbl);
  415. var $pmps_frm = document.createElement("select");
  416. $pmps_frm.id = "apc-pmps_frm";
  417. var $pmps_frm_1 = document.createElement("option");
  418. $pmps_frm_1.textContent = res_posFrm.slim;
  419. $pmps_frm.appendChild($pmps_frm_1);
  420. $pmps_frm_1.value = res_posFrm.slim;
  421. var $pmps_frm_2 = document.createElement("option");
  422. $pmps_frm_2.textContent = res_posFrm.square;
  423. $pmps_frm.appendChild($pmps_frm_2);
  424. $pmps_frm_2.value = res_posFrm.square;
  425. $pmps_frmLbl.appendChild($pmps_frm);
  426. ///pnl/menu/position/optioner/ 自動非表示
  427. var $pmps_hidLbl= document.createElement("label");
  428. $pmps_hidLbl.for = "apc-pmps_hid";
  429. $pmps_hidLbl.title = "自動非表示";
  430. $pmps_hidLbl.textContent = "auto hide:";
  431. $pmp_scr.appendChild($pmps_hidLbl);
  432. var $pmps_hid = document.createElement("input");
  433. $pmps_hid.id = "apc-pmps_hid";
  434. $pmps_hid.type = 'checkbox';
  435. $pmps_hidLbl.appendChild($pmps_hid);
  436. ///pnl/menu/position/ ページテーブル
  437. var $pmp_tbl = document.createElement("div");
  438. $pmp_tbl.className = "apc-pmp_box";
  439. $p_menu.appendChild($pmp_tbl);
  440. var $pmp_tblH = document.createElement("h5");
  441. $pmp_tblH.textContent = "Page Table";
  442. $pmp_tbl.appendChild($pmp_tblH);
  443. ///pnl/menu/position/pagetable/ 基準位置からの差
  444. var $pmpt_dstLbl = document.createElement("span");
  445. $pmpt_dstLbl.title = "基準位置からの差";
  446. $pmpt_dstLbl.textContent = "distance:";
  447. $pmp_tbl.appendChild($pmpt_dstLbl);
  448. var $pmpt_dst = document.createElement("input");
  449. $pmpt_dst.id = "apc-pmpt_dst";
  450. $pmpt_dst.type = 'number';
  451. $pmpt_dst.name = "pmpt_dst";
  452. $pmpt_dstLbl.appendChild($pmpt_dst);
  453. $pmpt_dstLbl.appendChild(document.createTextNode(" px"));
  454. ///pnl/menu/position/pagetable/ 配置形状
  455. var $pmpt_frmLbl = document.createElement("span");
  456. $pmpt_frmLbl.title = "配置形状";
  457. $pmpt_frmLbl.textContent = "form:";
  458. $pmp_tbl.appendChild($pmpt_frmLbl);
  459. var $pmpt_frm = document.createElement("select");
  460. $pmpt_frm.id = "apc-pmpt_frm";
  461. var $pmpt_frm_1 = document.createElement("option");
  462. $pmpt_frm_1.textContent = res_posFrm.pile;
  463. $pmpt_frm.appendChild($pmpt_frm_1);
  464. $pmpt_frm_1.value = res_posFrm.pile;
  465. var $pmpt_frm_2 = document.createElement("option");
  466. $pmpt_frm_2.textContent = res_posFrm.row;
  467. $pmpt_frm.appendChild($pmpt_frm_2);
  468. $pmpt_frm_2.value = res_posFrm.row;
  469. $pmpt_frmLbl.appendChild($pmpt_frm);
  470. ///pnl/menu/position/pagetable/ 自動非表示
  471. var $pmpt_hidLbl= document.createElement("label");
  472. $pmpt_hidLbl.for = "apc-pmpt_hid";
  473. $pmpt_hidLbl.title = "自動非表示";
  474. $pmpt_hidLbl.textContent = "auto hide:";
  475. $pmp_tbl.appendChild($pmpt_hidLbl);
  476. var $pmpt_hid = document.createElement("input");
  477. $pmpt_hid.id = "apc-pmpt_hid";
  478. $pmpt_hid.type = 'checkbox';
  479. $pmpt_hidLbl.appendChild($pmpt_hid);
  480. ///pnl/menu/ 閉じるボタン
  481. var $pm_cls = document.createElement("input");
  482. $pm_cls.id = "apc-pm_cls";
  483. $pm_cls.type = 'button';
  484. $pm_cls.name = "Close";
  485. $p_menu.appendChild($pm_cls);
  486. $pm_cls.value = "Close";
  487.  
  488.  
  489.  
  490.  
  491.  
  492. ///pnl/opt// トグル
  493. var Update_tgl = function(val)
  494. {
  495. if( val == res_apValid.enable )
  496. {
  497. $po_tglImg.src = RES.tglEnabled;
  498. $po_tgl.setAttribute( 'alt', "E");
  499. $po_tgl.title = "Toggle AP (Now:Enable)";
  500. }
  501. else
  502. {
  503. $po_tglImg.src = RES.tglDisabled;
  504. $po_tgl.setAttribute( 'alt', "D");
  505. $po_tgl.title = "Toggle AP (Now:Disable)";
  506. }
  507. return val;
  508. };
  509. ///pnl/opt// APイベントをキャプチャー
  510. document.addEventListener(
  511. 'AutoPagerizeToggleRequest',
  512. function(){
  513. apValid = Update_tgl(
  514. apValid == res_apValid.enable?
  515. res_apValid.disable:
  516. res_apValid.enable);
  517. GM_setValue( res_apValid._N, apValid);
  518. }
  519. );
  520. document.addEventListener(
  521. 'AutoPagerizeEnableRequest',
  522. function(){
  523. apValid = Update_tgl(res_apValid.enable);
  524. GM_setValue( res_apValid._N, apValid);
  525. }
  526. );
  527. document.addEventListener(
  528. 'AutoPagerizeDisableRequest',
  529. function(){
  530. apValid = Update_tgl(res_apValid.disable);
  531. GM_setValue( res_apValid._N, apValid);
  532. }
  533. );
  534. var FireEvent = function(ename)
  535. {
  536. var e = document.createEvent('Event');
  537. e.initEvent( ename, true, false);
  538. return document.dispatchEvent(e);
  539. };
  540. ///pnl/opt// トグルボタン クリックでリクエストイベント発火
  541. $po_tgl.addEventListener(
  542. 'click' , function()
  543. {
  544. return FireEvent('AutoPagerizeToggleRequest');
  545. }
  546. );
  547.  
  548. var ap = {
  549. 'page': 0,
  550. 'seam': [0]
  551. };
  552. var scTop = document.documentElement.scrollTop;
  553. var timer;
  554. // スクロール関数(jquery:animate:swingと違いキビキビした感じ)
  555. // target:目的Y位置 bearing:移動方向
  556. var PageScroll = function(target, bearing)
  557. {
  558. clearTimeout(timer);
  559. if( target==scTop ) return;
  560. if( bearing==null ) bearing = target-scTop;
  561. let y = (target-scTop)/5;
  562. window.scrollBy( 0,
  563. bearing>0? Math.ceil(y):
  564. bearing<0? Math.floor(y): 0
  565. );
  566. timer = setTimeout(
  567. function()
  568. {
  569. PageScroll( target, bearing);
  570. }, 10
  571. );
  572.  
  573. if( (bearing<0 && (target>=scTop && target<document.body.clientHeight)) ||
  574. (bearing>0 && target<=scTop) )
  575. {
  576. window.scrollTo( 0, target);
  577. clearTimeout(timer);
  578. }
  579. };
  580. ///pnl/scr/ 最上部へ移動
  581. $ps_top.addEventListener(
  582. 'click', function()
  583. {
  584. PageScroll(0);
  585. }
  586. );
  587. ///pnl/scr/ 最下部へ移動
  588. $ps_btm.addEventListener(
  589. 'click', function()
  590. {
  591. PageScroll( document.body.clientHeight-window.innerHeight );
  592. }
  593. );
  594. ///pnl/scr/ 前のページ
  595. $ps_prv.addEventListener(
  596. 'click', function()
  597. {
  598. PageScroll( scTop==ap.seam[ap.page]?
  599. ap.seam[ap.page-1]: ap.seam[ap.page]
  600. );
  601. }
  602. );
  603. ///pnl/scr/ 次のページ
  604. $ps_nxt.addEventListener(
  605. 'click', function()
  606. {
  607. PageScroll( ap.page+1<ap.seam.length?
  608. ap.seam[ap.page+1]:
  609. document.body.clientHeight-window.innerHeight
  610. );
  611. }
  612. );
  613.  
  614.  
  615.  
  616. ///pnl/tbl/ ページ数表示(summary)
  617. // マウスオーバーでリスト表示
  618. $p_tbl.addEventListener(
  619. 'mouseover' , function()
  620. {
  621. $pt_lst.style.display = 'flex';
  622. }
  623. );
  624. // マウス外すと消える
  625. $p_tbl.addEventListener(
  626. 'mouseout' , function()
  627. {
  628. $pt_lst.style.display = 'none';
  629. }
  630. );
  631. // 新しいページリストアイテムにイベントを追加
  632. var PageItem_AddEvent = function($elm, num)
  633. {
  634. $elm.textContent = num;
  635. // クリックでそのページにスクロール
  636. $elm.addEventListener(
  637. 'click', function()
  638. {
  639. let num = this.textContent-1;
  640. if( num >= 0 && num < ap.seam.length )
  641. PageScroll(ap.seam[num]);
  642. }
  643. );
  644. // ダブルクリックでページ移動
  645. $elm.addEventListener(
  646. 'dblclick', function()
  647. {
  648. let num = this.textContent-2;
  649. if( num >= 0 )
  650. document.getElementsByClassName("autopagerize_link")[num].href;
  651. }
  652. );
  653. };
  654. PageItem_AddEvent($pt_lstItem, 1);
  655.  
  656.  
  657.  
  658. ///pnl/ コンフィグメニュー
  659. // バブリング阻止
  660. $p_menu.addEventListener(
  661. 'click', function(e)
  662. {
  663. e.stopPropagation();
  664. }
  665. );
  666.  
  667.  
  668. ///pnl/menu/ 表示タイミング(timing to display)
  669. var Update_dspTim = function(val)
  670. {
  671. switch(val)
  672. {
  673. case res_dsptim.valid:
  674. $pnl.style.display =
  675. apState == res_apState.inhibit? 'none': 'block';
  676. break;
  677. case res_dsptim.loaded:
  678. $pnl.style.display =
  679. ap.seam.length == 1? 'none': 'block';
  680. break;
  681. case res_dsptim.always:
  682. default:
  683. $pnl.style.display = 'block';
  684. break;
  685. }
  686. return val;
  687. };
  688. $pmd_alw.addEventListener(
  689. 'click', function()
  690. {
  691. dspTim = Update_dspTim(res_dsptim.always);
  692. GM_setValue( res_dsptim._N, dspTim);
  693. }
  694. );
  695. $pmd_lod.addEventListener(
  696. 'click', function()
  697. {
  698. dspTim = Update_dspTim(res_dsptim.loaded);
  699. GM_setValue( res_dsptim._N, dspTim);
  700. }
  701. );
  702. $pmd_vld.addEventListener(
  703. 'click', function()
  704. {
  705. dspTim = Update_dspTim(res_dsptim.valid);
  706. GM_setValue( res_dsptim._N, dspTim);
  707. }
  708. );
  709.  
  710.  
  711. ///pnl/menu/ 位置
  712. // 再配置
  713. var Update_dst = function( $$, val)
  714. {
  715. val = parseInt(val);
  716. $$.style.top =
  717. unit == res_unit.pct?
  718. "calc( " + val + "px + " + posBasis + "% )":
  719. posBasis + val + 'px';
  720. return val;
  721. };
  722. var Update_allDest = function()
  723. {
  724. Update_dst( $p_opt, posDst.opt);
  725. Update_dst( $p_scr, posDst.scr);
  726. Update_dst( $p_tbl, posDst.tbl);
  727. };
  728. ///pnl/menu/position/ 基準位置変更
  729. $pmp_bas.addEventListener(
  730. 'change' , function()
  731. {
  732. posBasis = parseInt(this.value);
  733. Update_allDest();
  734. GM_setValue( res_posBasis, posBasis);
  735. }
  736. );
  737. ///pnl/menu/position/ 使用単位
  738. $pmp_unt.addEventListener(
  739. 'change' , function()
  740. {
  741. unit = this.value;
  742. Update_allDest();
  743. GM_setValue( res_unit._N, unit);
  744. }
  745. );
  746. ///pnl/menu/position/optioner/ 自動非表示
  747. $pmp_tuh.addEventListener(
  748. 'change' , function()
  749. {
  750. transUnhover = this.checked;
  751. GM_setValue( res_transUnhover, transUnhover);
  752. }
  753. );
  754. ///pnl/menu/position/optioner/ 位置ずらし
  755. $pmpo_dst.addEventListener(
  756. 'change' , function()
  757. {
  758. posDst.opt = Update_dst( $p_opt, this.value);
  759. GM_setValue( res_posDst._OPT, posDst.opt);
  760. }
  761. );
  762. ///pnl/menu/position/scroller/ 位置ずらし
  763. $pmps_dst.addEventListener(
  764. 'change' , function()
  765. {
  766. posDst.scr = Update_dst( $p_scr, this.value);
  767. GM_setValue( res_posDst._SCR, posDst.scr);
  768. }
  769. );
  770. ///pnl/menu/position/pagetable/ 位置ずらし
  771. $pmpt_dst.addEventListener(
  772. 'change' , function()
  773. {
  774. posDst.tbl = Update_dst( $p_tbl, this.value);
  775. GM_setValue( res_posDst._TBL, posDst.tbl);
  776. }
  777. );
  778. ///pnl/menu/position// 配置形状
  779. var Update_frm = function( $$, val)
  780. {
  781. $$.setAttribute( 'form', val);
  782. return val;
  783. };
  784. var Update_inhfrm = function( $$, val)
  785. {
  786. $$.setAttribute( 'inhfrm', val);
  787. return val;
  788. };
  789. ///pnl/menu/position/optioner/ 配置形状
  790. $pmpo_frm.addEventListener(
  791. 'change' , function()
  792. {
  793. posFrm.opt = Update_frm( $p_opt, this.value);
  794. GM_setValue( res_posFrm._OPT, posFrm.opt);
  795. }
  796. );
  797. $p_opt.setAttribute( 'form', posFrm.opt);
  798. ///pnl/menu/position/optioner/ 無効時配置形状
  799. $pmpo_ifm.addEventListener(
  800. 'change' , function()
  801. {
  802. posFrm.iop = Update_inhfrm( $p_opt, this.value);
  803. GM_setValue( res_posFrm._IOP, posFrm.iop);
  804. }
  805. );
  806. $p_opt.setAttribute( 'inhfrm', posFrm.iop);
  807. ///pnl/menu/position/scroller/ 配置形状
  808. $pmps_frm.addEventListener(
  809. 'change' , function()
  810. {
  811. posFrm.scr = Update_frm( $p_scr, this.value);
  812. GM_setValue( res_posFrm._SCR, posFrm.scr);
  813. }
  814. );
  815. $p_scr.setAttribute( 'form', posFrm.scr);
  816. ///pnl/menu/position/pagetable/ 配置形状
  817. $pmpt_frm.addEventListener(
  818. 'change' , function()
  819. {
  820. posFrm.tbl = Update_frm( $p_tbl, this.value);
  821. GM_setValue( res_posFrm._TBL, posFrm.tbl);
  822. }
  823. );
  824. $p_tbl.setAttribute( 'form', posFrm.tbl);
  825. ///pnl/menu/position// 自動非表示
  826. var AutoHide_pop = function()
  827. {
  828. $p_opt.setAttribute( 'autohide', 'hoving');
  829. $p_scr.setAttribute( 'autohide', 'hoving');
  830. $p_tbl.setAttribute( 'autohide', 'hoving');
  831. };
  832. $p_opt.addEventListener(
  833. 'mouseover', function()
  834. {
  835. if( posHid.opt == false )
  836. AutoHide_pop();
  837. }
  838. );
  839. $po_tgl.addEventListener( 'mouseover', AutoHide_pop);
  840. $p_scr.addEventListener( 'mouseover', AutoHide_pop);
  841. $p_tbl.addEventListener( 'mouseover', AutoHide_pop);
  842. var AutoHide_hiding = function()
  843. {
  844. if( posHid.opt == true )
  845. $p_opt.setAttribute( 'autohide', 'hidden');
  846. else if(transUnhover)
  847. $p_opt.setAttribute( 'autohide', 'transparent');
  848. else $p_opt.removeAttribute( 'autohide');
  849. if( posHid.scr == true )
  850. $p_scr.setAttribute( 'autohide', 'hidden');
  851. else if(transUnhover)
  852. $p_scr.setAttribute( 'autohide', 'transparent');
  853. else $p_scr.removeAttribute( 'autohide');
  854. if( posHid.tbl == true )
  855. $p_tbl.setAttribute( 'autohide', 'hidden');
  856. else if(transUnhover)
  857. $p_tbl.setAttribute( 'autohide', 'transparent');
  858. else $p_tbl.removeAttribute( 'autohide');
  859. };
  860. $pnl.addEventListener(
  861. 'mouseleave', function()
  862. {
  863. if( $p_menuOuter.style.display == 'none' )
  864. AutoHide_hiding();
  865. }
  866. );
  867. ///pnl/menu/position/optioner/ 自動非表示
  868. $pmpo_hid.addEventListener(
  869. 'change' , function()
  870. {
  871. posHid.opt = this.checked;
  872. GM_setValue( res_posHid._OPT, posHid.opt);
  873. }
  874. );
  875. ///pnl/menu/position/scroller/ 自動非表示
  876. $pmps_hid.addEventListener(
  877. 'change' , function()
  878. {
  879. posHid.scr = this.checked;
  880. GM_setValue( res_posHid._SCR, posHid.scr);
  881. }
  882. );
  883. ///pnl/menu/position/pagetable/ 自動非表示
  884. $pmpt_hid.addEventListener(
  885. 'change' , function()
  886. {
  887. posHid.tbl = this.checked;
  888. GM_setValue( res_posHid._TBL, posHid.tbl);
  889. }
  890. );
  891. /// 最親パネルを領域に合わせる(スキマ対策)
  892. var FixParentPanel = function()
  893. {
  894. let mintop, minlft, maxbtm, maxwid = null;
  895. $p_opt.style.display = 'flex';
  896. $p_scr.style.display = 'flex';
  897. let opt = $p_opt.getClientRects()[0];
  898. let scr = $p_scr.getClientRects()[0];
  899. if( opt!=null && scr!=null ){
  900. mintop = Math.min( opt.top, scr.top);
  901. maxbtm = Math.max( opt.bottom, scr.bottom);
  902. minlft = Math.min( opt.left, scr.left);
  903. maxwid = Math.max( opt.width, scr.width);
  904. }
  905. if( apState != res_apState.inhibit )
  906. {
  907. $p_tbl.style.display = 'block';
  908. let tbl = $p_tbl.getClientRects()[0];
  909. if( tbl != null )
  910. {
  911. mintop = Math.min( mintop, tbl.top);
  912. maxbtm = Math.max( maxbtm, tbl.bottom);
  913. minlft = Math.min( minlft, tbl.left);
  914. maxwid = Math.max( maxwid, tbl.width);
  915. }
  916. }
  917. $pnl.style.top = mintop + 'px';
  918. $pnl.style.left = minlft + 'px';
  919. $pnl.style.width = maxwid + 'px';
  920. $pnl.style.height = maxbtm - mintop + 'px';
  921. $p_opt.style.display = null;
  922. $p_scr.style.display = null;
  923. $p_tbl.style.display = null;
  924. };
  925. window.addEventListener( 'resize', FixParentPanel);
  926.  
  927. // コンフィグ画面表示
  928. var Open_Config = function()
  929. {
  930. $pnl.setAttribute( 'state', 'active');
  931. $p_menuOuter.style.display = 'flex';
  932. AutoHide_pop();
  933. };
  934. $po_cfg.addEventListener(
  935. 'click' , function()
  936. {
  937. Open_Config();
  938. }
  939. );
  940. /// ボタンが見えなくなった時のため、ショートカットで開けるようにする。
  941. /// vimperator使用時は、IGNORE ALL KEYSにして操作すること。
  942. /// Alt + Ctrl + p
  943. document.addEventListener(
  944. 'keydown', function(e)
  945. {
  946. if( e.altKey && e.ctrlKey && e.keyCode == 80 )
  947. Open_Config();
  948. }
  949. );
  950. ///pnl/menu/ コンフィグ閉じるボタン
  951. var Close_Config = function()
  952. {
  953. $p_menuOuter.style.display = 'none';
  954. if( apState == res_apState.inhibit )
  955. $pnl.removeAttribute('state');
  956. Update_allDest();
  957. AutoHide_hiding();
  958. FixParentPanel();
  959. };
  960. $p_menuOuter.addEventListener(
  961. 'click' , function()
  962. {
  963. Close_Config();
  964. }
  965. );
  966. $pm_cls.addEventListener(
  967. 'click' , function()
  968. {
  969. Close_Config();
  970. }
  971. );
  972.  
  973.  
  974.  
  975. // //// AutoPagerizeが有効なページで発火するイベント……のはずだが、全てのページで発火する
  976. // //// ここでAutoPagerizeDisableRequestなどを送っても意味がなかった
  977. // document.addEventListener(
  978. // 'GM_AutoPagerizeLoaded', function(e)
  979. // {
  980. // }
  981. // );
  982. /// APメッセージバー(アドオン版)かAPアイコン(スクリプト版)が挿入されると、
  983. /// APが有効なページであるとみなす。
  984. document.addEventListener(
  985. 'DOMNodeInserted', function(e)
  986. {
  987. if( apState != res_apState.inhibit ) return;
  988.  
  989. let $elm = e.target;
  990. if( $elm.id == "autopagerize_message_bar" )
  991. apState = res_apState.valid_addon;
  992. else if( $elm.id == "autopagerize_icon" )
  993. apState = res_apState.valid_script;
  994. if( apState != res_apState.inhibit )
  995. {
  996. // AutoPagerize有効なページでのみ行う処理
  997. $pnl.setAttribute( 'state', 'active');
  998. /// 「有効なページでのみ表示」の場合
  999. if( dspTim == res_dsptim.valid )
  1000. $pnl.style.display = 'block';
  1001.  
  1002. FixParentPanel();
  1003.  
  1004. $elm.addEventListener(
  1005. 'load', function()
  1006. {
  1007. FireEvent(
  1008. apValid == res_apValid.enable?
  1009. 'AutoPagerizeEnableRequest':
  1010. 'AutoPagerizeDisableRequest'
  1011. );
  1012. }
  1013. );
  1014. }
  1015. }
  1016. );
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022. // ウィンドウのスクロールが発生した時
  1023. window.addEventListener(
  1024. 'scroll', function()
  1025. {
  1026. scTop = document.documentElement.scrollTop;
  1027.  
  1028. // 現在の位置が何ページ目にあるか調査
  1029. for( let i=ap.seam.length-1; i>=0; i-- )
  1030. {
  1031. if( scTop >= ap.seam[i]-1 )
  1032. {
  1033. if( ap.page != i )
  1034. {
  1035. ap.page = i;
  1036. $pt_smyNow.textContent = i+1;
  1037. FixParentPanel();
  1038. }
  1039. break;
  1040. }
  1041. }
  1042. }
  1043. );
  1044.  
  1045. // ページを継ぎ足した時、継ぎ目の位置を記録する
  1046. var AP_SeamLine = function()
  1047. {
  1048. // 表示タイミングがロード後で、最初の継ぎ足しならパネル表示
  1049. if( ap.seam.length == 1 && dspTim == res_dsptim.loaded )
  1050. $pnl.style.display = 'block';
  1051.  
  1052. // 継ぎ目の絶対位置を取得
  1053. let $ap_sep = document.getElementsByClassName("autopagerize_page_separator");
  1054. let len = $ap_sep.length;
  1055. let offsety = 0, $elm = $ap_sep[len-1];
  1056. /// offsetTop が「親要素からの相対位置」なので、親を遡りながら計測する
  1057. while($elm)
  1058. {
  1059. offsety += $elm.offsetTop || 0;
  1060. $elm = $elm.offsetParent;
  1061. }
  1062. ap.seam[len] = offsety;
  1063. $pt_smyMax.textContent = len+1;
  1064.  
  1065. // ページリストアイテムを追加
  1066. var $new_pageitem = $pt_lstItem.cloneNode(true);
  1067. PageItem_AddEvent($new_pageitem, len+1);
  1068. $pt_lst.appendChild($new_pageitem);
  1069.  
  1070. FixParentPanel();
  1071. };
  1072. if( window.AutoPagerize )
  1073. {
  1074. console.log( 'window.AutoPagerize' );
  1075. // 継ぎ足した時
  1076. AutoPagerize.addFilter(AP_SeamLine);
  1077. }else
  1078. {
  1079. document.addEventListener(
  1080. 'GM_AutoPagerizeNextPageLoaded', function()
  1081. {
  1082. AP_SeamLine();
  1083. }
  1084. );
  1085. }
  1086.  
  1087. var UpdateState = function()
  1088. {
  1089. Update_tgl(apValid);
  1090. FireEvent(
  1091. apValid == res_apValid.enable?
  1092. 'AutoPagerizeEnableRequest':
  1093. 'AutoPagerizeDisableRequest'
  1094. );
  1095. switch(dspTim)
  1096. {
  1097. case res_dsptim.valid:
  1098. $pmd_vld.checked = true;
  1099. break;
  1100. case res_dsptim.loaded:
  1101. $pmd_lod.checked = true;
  1102. break;
  1103. case res_dsptim.always:
  1104. default:
  1105. $pmd_alw.checked = true;
  1106. break;
  1107. }
  1108. Update_dspTim(dspTim);
  1109. $pmp_bas.value = posBasis;
  1110. $pmp_unt.value = unit;
  1111. $pmp_tuh.checked = transUnhover;
  1112. $pmpo_dst.value = posDst.opt;
  1113. $pmps_dst.value = posDst.scr;
  1114. $pmpt_dst.value = posDst.tbl;
  1115. $pmpo_ifm.value = posFrm.iop;
  1116. $pmpo_frm.value = posFrm.opt;
  1117. $pmps_frm.value = posFrm.scr;
  1118. $pmpt_frm.value = posFrm.tbl;
  1119. $pmpo_hid.checked = posHid.opt;
  1120. $pmps_hid.checked = posHid.scr;
  1121. $pmpt_hid.checked = posHid.tbl;
  1122.  
  1123. Update_inhfrm( $p_opt, posFrm.iop);
  1124. Update_frm( $p_opt, posFrm.opt);
  1125. Update_frm( $p_scr, posFrm.scr);
  1126. Update_frm( $p_tbl, posFrm.tbl);
  1127.  
  1128.  
  1129. Update_allDest();
  1130. AutoHide_hiding();
  1131. FixParentPanel();
  1132. };
  1133.  
  1134. var GetState = function()
  1135. {
  1136. apValid = GM_getValue( res_apValid._N, res_apValid.enable);
  1137. dspTim = GM_getValue( res_dsptim._N, res_dsptim.always);
  1138. posBasis = GM_getValue( res_posBasis, 48);
  1139. unit = GM_getValue( res_unit._N, res_unit.pxl);
  1140. transUnhover = GM_getValue( res_transUnhover, false);
  1141. posDst = {
  1142. opt: GM_getValue(res_posDst._OPT, 0),
  1143. scr: GM_getValue(res_posDst._SCR, 36+2),
  1144. tbl: GM_getValue(res_posDst._TBL, 36+2+136+2)
  1145. };
  1146. posFrm = {
  1147. opt: GM_getValue( res_posFrm._OPT, res_posFrm.up),
  1148. iop: GM_getValue( res_posFrm._IOP, res_posFrm.noset),
  1149. scr: GM_getValue( res_posFrm._SCR, res_posFrm.slim),
  1150. tbl: GM_getValue( res_posFrm._TBL, res_posFrm.pile)
  1151. };
  1152. posHid = {
  1153. opt: GM_getValue( res_posHid._OPT, false),
  1154. scr: GM_getValue( res_posHid._SCR, false),
  1155. tbl: GM_getValue( res_posHid._TBL, false)
  1156. };
  1157. UpdateState();
  1158. };
  1159. GetState();
  1160.  
  1161.  
  1162. // タブを切り替えた時にステータスを最新に同期する
  1163. document.addEventListener(
  1164. 'visibilitychange', function()
  1165. {
  1166. if( document.visibilityState == 'visible' )
  1167. {
  1168. GetState();
  1169. }
  1170. }
  1171. );
  1172. })();