// ==UserScript==
// @name DMZJ漫画转为手机版链接
// @author Crab
// @namespace [email protected]
// @description DMZJ漫画更新页面链接转为手机版
// @include *//i.178.com/~sms.cartoon.cartoonListUid*
// @include *//i.178.com/~sms.cartoon.cartoonNewList*
// @include *//m.dmzj.com/*
// @include *//v2.api.dmzj.com*
// @include *//manhua.dmzj.com/*
// @include *//user.dmzj.com/my/subscribe/mh/*
// @include /^https?:\/\/i\.dmzj\.com\/\/?subscribe.*/
// @compatible firefox 34+
// @version 0.7.1
// @grant none
// ==/UserScript==
(function(){
if(top !== self && ['m.dmzj.com', 'v2.api.dmzj.com', 'manhua.dmzj.com/zt/module/'].some(url => new RegExp('^https?:\\/\\/' + url).test(location.href))){
return (function(){
addEventListener('message', function(event){
if(!event.data.nid.startsWith('dmzj_get_chapters') ||
!event.data.url ||
(new URL(event.data.url).host != location.host)
) return;
var req = new XMLHttpRequest();
req.open('GET', event.data.url, true);
req.onload = function () {
event.data.response = this.responseText;
top.postMessage(event.data, event.origin);
};
req.send();
});
top.postMessage({nid: 'dmzj_get_chapters' + location.host}, '*');
})();
};
var gUrl = (function(){
var url = document.URL;
if(/cartoonListUid|cartoonNewList/g.test(url)){
return 'cartoonList';
}else if(/^https?:\/\/manhua\.dmzj\.com\/update\_\d+\.shtml$/.test(url)){
return 'update';
}else if(/^https?:\/\/m\.dmzj\.com\/view\/.+\.html(\?t=\d+#\d+)?$/.test(url)){
return 'mobile';
}else if(/^https?:\/\/m\.dmzj\.com\/([^\/\.]+\.html)?(\?t=\d+#\d+)?$/.test(url)){
return 'mobileHome';
}else if(/^https?:\/\/manhua\.dmzj\.com\/.+$/.test(url)){
return 'desktop';
}else if(/^https?:\/\/user\.dmzj\.com\/.+$/.test(url)){
return 'oldSubscribe';
}else if(/^https?:\/\/i\.dmzj\.com\/\/?subscribe.*$/.test(url)){
return 'subscribe';
}
})();
var $$ = function(e){
return Array.from(document.querySelectorAll(e))
};
//console.log(gUrl);
var toMobileLink = function(a){
var a1 = a.cloneNode(true);
a1.textContent = '(#)';
a1.style.color = 'orange';
a.parentNode.insertBefore(a1, a);
a.href = a.href.replace(/\/\/manhua([^\/]+)/,'//m$1/view').replace(/shtml$/, 'html');
};
window._preventParentScrolling = function(target){
target.addEventListener('wheel', e => {
if(e.deltaY < 0 ?
target.scrollTop == 0 :
target.scrollTop == target.scrollHeight - target.clientHeight
) e.preventDefault();
});
};
window._cE = function (name, attr, parent){
var e = document.createElement(name);
for (var i in attr || [])
i == 'text' ? (e.textContent = attr[i]) : e.setAttribute(i, attr[i]);
parent && (Array.isArray(parent) ?
parent[0].insertBefore(e, parent.length == 2 ? parent[1] : parent[0].firstChild) :
parent.appendChild(e));
return e;
};
if(gUrl == 'cartoonList'){
$$('.acg-content-text a[href$=shtml]').forEach(toMobileLink);
}if(gUrl == 'update'){
$$('.pictext a[href$=shtml]').forEach(toMobileLink);
//漫画更新页面国漫灰色显示
var gm = [];
$$('.pictext a[href^="http\:\/\/www\.dmzj\.com\/"]').forEach(function(a){
var boxdiv = a;
while(boxdiv){
if(boxdiv.className == 'boxdiv1'){
gm.push(boxdiv);
return boxdiv.classList.add('filter');
}
boxdiv = boxdiv.parentNode;
}
});
//将国漫排在最后
var boxs = $$('.newpic_bg, .newpic_bgno');
gm.length && $$('.boxdiv1').filter(function(m){
return gm.indexOf(m) == -1;
}).concat(gm).forEach(function(m, i){
i = Math.floor(i / 4);
boxs[i].appendChild(m);
});
gm = boxs = null;
_cE('style', {text: `
.newpic_bg::after, .newpic_bgno::after{
content: '';
display: block;
clear: both;
}
.boxdiv1 .picborder {
height:auto;
}
.boxdiv1.filter:not(:hover) .pictext,
.boxdiv1.filter:not(:hover) .picborder {
filter: grayscale(100%);
}
.boxdiv1.filter{
position: relative;
overflow: hidden;
}
.boxdiv1.filter::after{
content:'国漫';
display: block;
position: absolute;
z-index: 1;
color: white;
font-size:16px;
transform: rotate(-45deg);
transform-origin:10px 65px;
pointer-events: none;
width: 100px;
height: 50px;
text-align: center;
line-height: calc(100px - 1.5em);
background: rgba(255, 165, 0, 0.7);
}
`}, document.head);
}else if(gUrl == 'desktop'){
$$('.cartoon_online_border,.cartoon_online_border_other,.adiv2hidden:last-child'
.replace(/(?=,)|$/g, ' a[title][href$=shtml]')).forEach(toMobileLink);
//被隐藏的漫画至少显示最新话
var mhContainer = $$('.cartoon_online_border')[0];
if(mhContainer.firstElementChild.localName == 'img'){
mhContainer.innerHTML = '<a href="' + g_comic_url + g_last_chapter_id +'.shtml" title="'+ g_last_update +'" target="_blank" style="color:orange;">(#)</a><a href="http://m.dmzj.com/view/'+ g_comic_id +'/' + g_last_chapter_id +'.html" title="'+ g_last_update +'" target="_blank">'+ g_last_update +'</a>' +'<h2>正在加载被屏蔽的地址...</h2>';
var iframe = _cE('iframe', {style: 'display:none', src: 'http://v2.api.dmzj.com/'}, document.body);
addEventListener('message', function(e){
if(!e.data.nid == 'dmzj_get_chapters'+'v2.api.dmzj.com') return;
if(!e.data.response)
return e.source.postMessage({nid: e.data.nid, url: 'http://v2.api.dmzj.com/comic/'+ g_comic_id + '.json'}, e.origin);
mhContainer.innerHTML = '';
JSON.parse(e.data.response).chapters.forEach(function(chapters){
_cE('h3', {text: chapters.title}, mhContainer);
var ul = _cE('ul', null, mhContainer);
chapters.data.forEach(function(c){
_cE('li', null, ul).innerHTML = '<a href="' + c.chapter_id +'.shtml" title="'+ c.chapter_title +'" target="_blank" style="color:orange;">(#)</a><a href="http://m.dmzj.com/view/'+ g_comic_id +'/' + c.chapter_id +'.html" title="'+ c.chapter_title +'" target="_blank">'+ c.chapter_title +'</a>'
});
_cE('div', {class: 'clearfix'}, mhContainer);
});
removeEventListener('message', arguments.callee); iframe.remove();
});
}
}else if(gUrl == 'subscribe'){
addEventListener('DOMContentLoaded', function(){
_cE('style', {text: `
.dy_r p em.c_space{
overflow:auto!important;
width:auto!important;
display: inline;
white-space: normal;
}
.dy_r p{height:auto!important;}
`}, document.head);
var my_subscribe_id = $$('#my_subscribe_id')[0];
var addObserver = function(){
my_subscribe_id && (new MutationObserver(function(){
$$('.c_space> a').forEach(toMobileLink);
//未看新漫画总排前
this.disconnect();
$$('.c_space + .new').reverse().forEach(function(icon){
var li = icon.parentNode.parentNode.parentNode;
li.parentNode.insertBefore(li, li.parentNode.firstElementChild);
});
addObserver();
})).observe(my_subscribe_id, {childList: true});
};
addObserver();
});
}else if(gUrl == 'oldSubscribe'){
$$('.autoHeight p:nth-child(2)> a[href$="shtml"]').forEach(toMobileLink);
}else if(gUrl == 'mobile'){
var scriptLoader = urls => {
return Promise.all(urls.map(url => {
return new Promise(resolve => {
_cE('script', {src: url}, document.body).onload = resolve;
});
}));
};
var task = a => {
return new Promise(resolve => {
a(resolve);
});
};
var queues = arr => {
return Promise.all(arr.map(a => {
if(typeof a == 'function')
return task(a);
return a;
}));
};
var xhr = (url, callback) => {
var n = 'dmzj_get_chapters';
var nid = n + Math.random();
var onMessage = e => {
if(e.data.nid == n + new URL(url).host && !e.data.response){
e.source.postMessage({url: url, nid: nid}, e.origin);
}else if(e.data.nid == nid){
removeEventListener('message', onMessage);
callback(e);
}
};
addEventListener('message', onMessage);
};
if(document.body.childElementCount == 0){
console.log('%c本漫画桌面端浏览器被屏蔽,正在尝试恢复。。', 'color:red; font-size:150%;');
document.body.innerHTML = '<div class="UnderPage"><div class="sharWin"id="read_Shar"><div class="sharClose"></div><p class="sharBar">分享到:</p><div class="sharBox"><div id="bdshare"class="bdshare_t bds_tools"><a class="bds_tsina sina"style=""></a><a class="bds_tqq tqq"></a><a class="bds_qzone zone"></a></div></div></div><section id="currentCache"><div class="view-imgBox"id="m_r_imgbox_0"><div class="mh_box"><div id="commicBox"></div><div class="botNav"><div class="botNav_box"><a class="tc"href="/viewpoint/40065/68253.html"><span>吐槽<em>0</em></span></a><a class="dy"onclick="canDY(this)"id="dys"href="javascript:void(0);"><span>订阅</span></a><a class="fx"onclick="sharwindow()"><span>分享</span></a></div></div><div class="letchepter"><a href="javascript:void(0);"onclick="$(\'#loadPrevChapter\').click()"class="beforeChapter"><上一章</a><em>/</em><a href="" class="ChapterLestMune">返回目录</a><em>/</em><a href="javascript:void(0);"onclick="$(\'#loadNextChapter\').click()"class="afterChapter">下一章></a></div></div></div></section><div class="subHeader"style="display: none; z-index: 999999999999999999;"id="m_r_title"><a href="javascript:"class="iconRet"onclick="mReader.returnBtn()"></a><a href="javascript:;"class="BarTit"></a><a href="javascript:"class="iconShar"onClick="sharwindow()"></a></div><div class="control_bottom"style="display: none; z-index: 999999999999999999;"id="m_r_bottom"><div class="BtnBox"><div class="load_box next"id="loadNextChapter"onclick="mReader.nextBtnAction()"></div><div class="load_box prev"id="loadPrevChapter"onclick="mReader.prevBtnAction()"></div><div class="page_left"id="m_r_nums"><span>1</span>/1</div></div><div class="control_scroll"><a href=""class="control_commentIcon"><em id="comment_count"></em></a><div class="scroll_left_Box"><div class="scroll_box"id="m_r_slider"><div class="scroll_barX"></div><div class="scroll_bar"id="m_r_slider_ball"ontouchmove="mReader.touchMoveAction(event)"ontouchend="mReader.touchEndAction(event)"></div></div></div></div></div><div class="control_panel alpha"style=" display:block"id="m_r_panelbox"prompt="true"onclick="mReader.clickAction(event)"><div class="mark"style="display: none;"id="mark"></div></div></div>';
_cE('link', {href:'/css/global.css?2015111317', type: 'text/css', rel: 'stylesheet'}, document.head);
_cE('link', {href:'/css/style.css?2015102217', type: 'text/css', rel: 'stylesheet'}, document.head);
//shijizhiling 8785
var pathname = location.pathname.split('/');
var id = pathname.pop().split('.').shift();
var comicName = pathname.pop();
var getChapter = queues([
callback => {
if(/^\d+$/.test(comicName)){
return callback(comicName);
}
//获取 漫画id
_cE('iframe', {style: 'display:none', src: 'http://manhua.dmzj.com/zt/module/'}, document.body);
xhr('http://manhua.dmzj.com/'+ comicName + '/', callback);
}, callback => {
//同时加载 api iframe
var onMessage = e => {
if(e.data.nid == 'dmzj_get_chapters'+'v2.api.dmzj.com' && !e.data.response){
removeEventListener('message', onMessage);
callback(e);
}
};
addEventListener('message', onMessage);
_cE('iframe', {style: 'display:none', src: 'http://v2.api.dmzj.com/'}, document.body);
}]).then(e => {
var match = null;
if(e[0].data){
match = e[0].data &&
e[0].data.response &&
e[0].data.response.match(/var g_comic_id = "(\d+)";/);
match = match[1];
}else{
match = e[0];
}
if(!match) return Promise.reject([e, match]);
//屏蔽漫画章节id全局变量依赖
window.subId = match;
window.chapterId = id;
return queues([
'http://v2.api.dmzj.com/comic/'+ match + '.json',
'http://v2.api.dmzj.com/chapter/'+ match + '/' + id + '.json'
].map(url => {
return callback => {
//获取漫画章节目录
var nid = 'dmzj_get_chapters' + Math.random();
var onMessage = e => {
if(e.data.nid == nid && e.data.response){
removeEventListener('message', onMessage);
callback(e);
}
};
addEventListener('message', onMessage);
e[1].source.postMessage({
nid: nid,
url: url
}, e[1].origin);
}
}));
}, e => console.error(e));
scriptLoader(['/js/jquery-1.9.1.min.js']).then(()=>{
queues([
getChapter,//获取章节
scriptLoader([
'/js/jquery.cookie.js',
'/js/common.js',
'/js/domain.js',
'/js/m_reader.js?2015102416',
'/js/TSB.js',
'/js/main.js',
'/js/jquery.lazyload.min.js',
]),
]).then(e => {
//必须等待获取章节id全局变量依赖
return scriptLoader(['/js/m_readerBg.js?20160720']).then(() => {
return e;
});
}).then(e => {
var json1 = JSON.parse(e[0][0].data.response);
var json2 = JSON.parse(e[0][1].data.response);
//console.log(json1, json2)
var chapters = json1.chapters.map(d => {
return d.data.find(cid => cid.chapter_id == id);
});
var cindex = chapters.findIndex(c => c);
var chapter = chapters[cindex];
var index = json1.chapters[cindex].data.indexOf(chapter);
var data = {
id: id,
comic_id: json1.id,
chapter_name: chapter.chapter_title,
chapter_order: chapter.chapter_order,
createtime: chapter.updatetime,
page_url: json2.page_url,
chapter_type:0,
chapter_num:chapter.chapter_order,
sum_pages:json2.picnum,
direction:json2.direction,
filesize:chapter.filesize,
picnum:json2.picnum,
hit:json1.hit_num,
prev_chap_id: json1.chapters[cindex].data[index + 1].chapter_id,
comment_count:json2.comment_count
};
document.title = json1.title + ' - ' + chapter.chapter_title;
if(index > 0){
data['next_chap_id'] = json1.chapters[cindex].data[index - 1].chapter_id
}
_cE('script', null, [document.body]).textContent = `
mReader.initData(${JSON.stringify(data)}, "${json1.title}", "${json1.cover}");
`;
updateMobilePage();
var div = _cE('div', {id: 'chapters'});
div.innerHTML = '<dl>' + json1.chapters.map((d, i) => {
return d.data.map((c, j) => {
return `<li><a ${i == cindex && j == index ? 'class="cur" ' : ''}href="/view/${json1.id}/${c.chapter_id}.html" title="${c.chapter_title}">${c.chapter_title}</a></li>`
}).join('');
}).map((c, i) => {
return `<dt>${json1.chapters[i].title}</dt>
<dd><ul>${c}</ul></dd>`
}).join('') + '</dl>';
_preventParentScrolling(div);
$$('.control_commentIcon')[0].href = `/viewpoint/${data.comic_id}/${data.id}.html`;
$$('.BarTit')[0].textContent = chapter.chapter_title;
//没有触发resize、scroll事件无法显示第一张图片
window.jQuery(window).trigger('scroll');
var btn = $$('#np_chap>a')[0];
var backLink = $$('.ChapterLestMune')[0];
backLink.href = btn.href;
document.body.appendChild(div);
document.addEventListener('click', event=>{
if(event.button === 0 && (event.target === btn || event.target === backLink)){
div.classList.toggle('show');
return event.preventDefault();
}
if(div.contains(event.target))
return;
div.classList.remove('show');
});
});
});
}else{
updateMobilePage()
}
function updateMobilePage(){
//去倒计时guanggao
window['times'] = 0;
typeof window['llt'] === 'function' && window['llt']();
_cE('style', {text: `
body .UnderPage .subHeader {background-color: rgba(255, 255, 255, 0.68);}
.UnderPage{background:#222!important}
#commicBox{overflow:hidden}
#commicBox>div{text-align:center; }
#commicBox>div>img{width:80%!important;margin: 0px -3% 0px 3%;}
#pageNum {
position: fixed;
top: 50px;
background: rgba(238, 170, 0, 0.5);
color: blanchedalmond;
height: 1.6em;
text-align:center;
line-height: 1.6em;
font-size: 2.3em;
right: 0px;
}
#np_chap{
position: fixed;
bottom:30%;
right: 20px;
z-index: 11111;
}
#np_chap>div>div, #np_chap>a{
cursor: pointer;
display: block;
background: transparent url("/images/page_bg.png") no-repeat scroll center bottom / 100% auto;
width: 40px;
height:40px;
transform: rotate(90deg);
margin-top: 5px;
box-shadow: 0 0 6px -2px rgba(255, 255, 255, 0.65);
border-radius: 8px;
}
#np_chap>div>div:not(:hover), #np_chap>a:not(:hover){
opacity: .5;
}
#np_chap>div>div:last-child{
transform: rotate(-90deg);
}
#np_chap>a{
background: rgba(0, 0, 0, 0.7);
transform:none;
position:relative;
}
/*首页小房子*/
#np_chap>a>span{
position:absolute;
width: 16px;
height:8px;
border: 1.5px solid #fff;
border-top-width: 0;
border-radius: 0 0 2.5px 2.5px;
top:50%;
left:calc(50% - 8px);
pointer-events:none;
}
#np_chap>a>span::before,
#np_chap>a>span::after{
position:absolute;
content: "";
width: 15px;
border-top: 1.5px solid #fff;
transform: rotate(-40deg);
top:-7px;
left:-5px;
}
#np_chap>a>span::before{
transform: rotate(40deg);
left:auto;
right:-5px;
}
#tucao{
position: fixed;
top: 50px;
left: 0;
color: #fff;
z-index: 1111111;
height: calc(100% - 115px);
}
#tucao:not(:hover){
opacity: 0.5
}
#tucao ul{
overflow-y:hidden;
height: calc(100% - 40px);
}
#tucao:hover ul{
overflow-y: scroll;
}
#tucao pre{
font-weight: bold;
margin-bottom: 5px;
}
#tucao li{
margin-bottom: 5px;
margin-left: 3px;
}
#tucao span{
padding: 0px 3px;
border-radius: 2px;
cursor: pointer;
border:transparent 1px solid;
}
#tucao span:hover{
background-color:#FFF!important;
color:#000;
border-color:red;
}
.control_scroll{
margin-top: 0!important;
padding-top:0!important;
opacity:.5;
transition: opacity 0.3s cubic-bezier(.55,.09,.68,.53) 0s;
}
.control_scroll:hover{
opacity:1;
}
#m_r_bottom{
display:block!important;
height:38px!important
}
#m_r_bottom>.BtnBox{
display:none;
}
#m_r_slider{
background-clip: content-box;
padding: 14px 0px;
top: 3px;
}
#m_r_slider_ball{
top: 3px;
}
.control_commentIcon{
margin-top: 9px;
}
/*#m_r_panelbox{display:none!important}
#commicBox>div>img{border-top:2px solid red;margin-top:-2px;}*/
#chapters {
display:none;
position: fixed;
z-index: 100000000000;
width: 60%;
max-width: 400px;
height: 80%;
overflow-y: scroll;
top:50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(255,255,255,.9);
border: 5px solid rgba(0,0,0,.5);
border-radius: 5px;
padding: 10px;
}
#chapters.show{
display:block;
}
#chapters ul:after{
display: list-item;
clear: both;
content: '';
}
#chapters dt{
border-bottom: 2px solid #ccc;
font-size: 150%;
text-indent: .5em;
padding: 5px 0;
}
#chapters dl+dl{
border-top: 2px solid #ccc;
}
#chapters li{
float: left;
width: 33%;
padding: 2px 8px;
box-sizing: border-box;
}
#chapters a{
display: inline-block;
border: 2px solid transparent;
padding:0 5px;
color: #000;
max-width: 100%;
white-space: pre;
overflow: hidden;
text-overflow: ellipsis;
}
#chapters a:hover{
color:blue;
border-color:blue;
}
#chapters a.cur{
border-color:orange;
}
/*底栏*/
.botNav{
background-color: #222;
}
.letchepter{
padding-bottom: 40px;
background-color: #222;
border-top-color:#000;
}
.letchepter .disable{
color:#4d4d4d !important;
}
.letchepter .disable:hover{
cursor:not-allowed;
}
`}, document.head);
var data = $$('body script:not([src])').map(s => s.textContent.match(/mReader\.initData\((.+\})(?=,\s*(?:"|'))/)).filter(s=>s)[0];
try{
data = JSON.parse(data[1]);
console.info(data.page_url.join('\n'));
}catch(e){
return console.error(e);
}
var np_chap = _cE('span', {id:'np_chap'}, document.body),
np = _cE('div', null, np_chap);
_cE('span', null, _cE('a', {title: '章节目录', href: '../../info/'+data.comic_id+'.html'}, [np_chap]));
_cE('div', {title: '上一话', onclick: 'mReader.prevBtnAction()'}, np).style.display = data.prev_chap_id ? '' : 'none';
_cE('div', {title: '下一话', onclick: 'mReader.nextBtnAction()'}, np).style.display = data.next_chap_id ? '' : 'none';
$$('.beforeChapter')[0].classList.toggle('disable', !data.prev_chap_id);
$$('.afterChapter')[0].classList.toggle('disable', !data.next_chap_id);
_cE('script', {text: '('+(function(chapter_name){
window.success_jsonpCallback = function(json){
var length = json.data && json.data.list && json.data.list.length || 0;
tucao.innerHTML = '';
_cE('pre', {text: chapter_name+'\n'+(json.msg=='提交成功'? '' : ' '+json.msg) + (length ? ' 现有 '+ length+'/'+(json.data && json.data.total || 0)+' 吐槽:' : '')}, tucao);
if(!length) return;
var ul = _cE('ul', null, tucao),
opacity = 1,
tc = null;
for(var i=0; i<length; i++){
tc = json.data.list[i];
_cE('span', {text: tc.title, title: tc.nickname+' (uid: '+tc.uid+')\nIP:'+tc.ip}, _cE('li', null, ul)).style.backgroundColor = 'rgba(39, 117, 247, '+ opacity +')';
opacity -= 1 / (length + 1);
}
window.jQuery('#comment_count').show();
_preventParentScrolling(ul);
};
}).toString()+')(" <'+data.chapter_name+'>")'}, document.head);
var tucao = _cE('div', {id:'tucao', text: '评论加载中..'}, document.body);
_cE('script', {src: 'http://interface.dmzj.com/api/viewpoint/getViewpoint?callback=success_jsonpCallback&more=1&type='+data.chapter_type+ '&type_id='+data.comic_id+'&chapter_id='+data.id+'&_='+ new Date().getTime()}, document.body);
window._pageNum = _cE('div', {id:'pageNum', text: '1/'+data.sum_pages}, document.body);
var scrollTimeout;
var imgs = null;
//改良原来的获取当前页码方法
mReader.getCurrPage = function(){
imgs = imgs || document.querySelector('#commicBox>div[id]').children;
var ch = document.documentElement.clientHeight;
for(var i=0;i<imgs.length;i++){
var r = imgs[i].getBoundingClientRect();
if(r.top <= 95 && r.bottom > 95)
return i + 1;
}
};
addEventListener('scroll', function(){
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(function(){
// 页码
!window._dragToScroll && mReader.updatePageDisplay();
window._dragToScroll = false;
var i = mReader.getCurrPage();
if(i) return (_pageNum._page != i) && (_pageNum.textContent = (_pageNum._page = i)+'/'+data.sum_pages);
}, 100);
});
//修复拖拽进度条
var slider = $$('#m_r_slider_ball')[0],
sliderBar = $$('#m_r_slider')[0];
if(slider && sliderBar){
window._isSlider = false;
window._sliderOffset = 0;
mReader.clickAction = eval('('+ mReader.clickAction.toString()
.replace(/#m_r_bottom/g, '#mark')
+').bind(mReader)');
//拖拽滑块跳转
addEventListener('mousemove', eval('('+ mReader.touchMoveAction.toString()
.replace(/^.*\{/, '$&\nif(!window._isSlider) return;\n')
.replace('touches[0]', 'event')
.replace('32 -', 'window._sliderOffset - 2*')
.replace(/.*\}$/,'window._pageNum.textContent = this.curr_page + "/"+ this.page_num;$&')
+').bind(mReader)'));
slider.onmousedown = function(e){
if(event.button !== 0 || e.target !== this) return;
window._isSlider = true;
window._sliderOffset = e.clientX - this.offsetLeft - this.parentNode.offsetLeft;
};
addEventListener('mouseup', function(event){
if(!window._isSlider) return;
window._isSlider = false;
window._dragToScroll = true;
mReader.touchEndAction();
});
//点击进度条位置跳转
sliderBar.addEventListener('mousedown', eval('('+ mReader.touchMoveAction.toString()
.replace(/^.*\{/, '$&\nif(event.button !== 0)return;\nwindow._isSlider = true; window._dragToScroll = true;\n')
.replace('touches[0]', 'event')
.replace('32 -', '2*')
.replace('currX < max', 'currX <= max')
.replace(/.*\}$/,'window._pageNum.textContent = this.curr_page + "/"+ this.page_num;$&')
+').bind(mReader)'));
}
//弹出确定取消订阅窗口询问,以免误点击取消订阅。
if(typeof window.canDY === 'function'){
var _canDY = window.canDY;
window.canDY = obj => {
if(obj.classList.contains('dy_h') && !window.confirm('是否确定取消订阅?'))
return;
_canDY(obj);
}
}
({
_isMousedown: false,
_x:0, _y:0, _lx: 0, _ly: 0,
init:function(){
['mousedown', 'mouseup', 'mousemove'].forEach(e => document.addEventListener(e, this));
$$('#m_r_panelbox')[0].removeAttribute('onclick');
},
handleEvent: function(event){
switch(event.type){
case 'mousedown' :
if(event.button != 0)
return;
if(event.target.id == 'm_r_panelbox'){
event.preventDefault();
}else{
return;
}
this._isMousedown = true;
this._x = this._lx = event.clientX;
this._y = this._ly = event.clientY;
break;
case 'mouseup' :
this._isMousedown = false;
this._x = this._lx = this._y = this._ly = 0;
break;
case 'mousemove' :
if(this._isMousedown){
var x = event.clientX - this._x,
y = event.clientY - this._y;
if(Math.sqrt(x * x + y * y) > 10){
//屏蔽漫画页怪异模式下无法获取根节点scrollTop
var st = document.documentElement.scrollTop || document.body.scrollTop,
dis = Math.abs(event.clientY - this._ly);
scrollTo(0, st - (event.clientY - this._ly) * Math.min(1.8, 1 + dis * 100 / innerHeight));
this._lx = event.clientX;
this._ly = event.clientY;
}
}
break;
}
}
}).init();
}//updateMobilePage end
}else if('mobileHome'== gUrl){
_cE('style', {text: `
.imgBox [class^='col_3_'] li{
width: 10%!important;
min-width: 120px;
margin: 0px 0% 0% 3%!important;
}
.imgBox [class^='col_2'] li{
width: 18%!important;
min-width: 200px;
}
.imgBox [class^='col_3_'] li img{
height: auto!important;
}
.imgBox [class^='col_3_'] li:nth-child(7n+1){
clear:left;
}
`}, document.head);
}
})();