Greasy Fork is available in English.

DMZJ漫画转为手机版链接

DMZJ漫画更新页面链接转为手机版

Versão de: 16/02/2017. Veja: a última versão.

// ==UserScript==
// @name        DMZJ漫画转为手机版链接
// @author      Crab
// @namespace   DMZJManga@dmzj.com
// @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.4.2
// @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.nextSibling);
	a.href = a.href.replace(/\/\/manhua([^\/]+)/,'//m$1/view').replace(/shtml$/, 'html');
};

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 a[title][href$=shtml]').forEach(toMobileLink);

	//被隐藏的漫画至少显示最新话
	var mhContainer = $$('.cartoon_online_border')[0];
	if(mhContainer.firstElementChild.localName == 'img'){
		mhContainer.innerHTML = '<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><a href="' + g_comic_url + g_last_chapter_id +'.shtml" title="'+ g_last_update +'" target="_blank" style="color:orange;">(#)</a>' +'<h2>正在加载被屏蔽的地址...</h2>';

		//var iframe = _cE('iframe', {style: 'display:none', src: 'http://m.dmzj.com/xhr'}, document.body);
		
		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'+'m.dmzj.com') return;
			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: '/info/'+ g_comic_id + '.html'}, e.origin);
				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.match(/<script type="text\/javascript">\s+initIntroData\(([^)]+)\);/)[1]).forEach(function(chapters){
			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="http://m.dmzj.com/view/'+ c.comic_id +'/' + c.id +'.html" title="'+ c.chapter_name +'" target="_blank">'+ c.chapter_name +'</a><a href="' + g_comic_url + c.id +'.shtml" title="'+ c.chapter_name +'" target="_blank" style="color:orange;">(#)</a>'
					_cE('li', null, ul).innerHTML = '<a href="http://m.dmzj.com/view/'+ g_comic_id +'/' + c.chapter_id +'.html" title="'+ c.chapter_title +'" target="_blank">'+ c.chapter_title +'</a><a href="' + c.chapter_id +'.shtml" title="'+ c.chapter_title +'" target="_blank" style="color:orange;">(#)</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}'}, 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();
				Array.from($$('.c_space + .new')).reverse().forEach(function(icon){
					var li = icon.parentNode.parentNode.parentNode;
					li.parentNode.insertBefore(li, li.parentNode.firstElementChild);
				});
				// let protocol = location.protocol;
				// $$('.dy_img img').forEach(function(img){
				// 	var m = img.src.match(/(^https?:)(.*)/);
				// 	if(m && protocol != m[1])
				// 		img.src = protocol + m[2];
				// });
				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({nid: e.data.nid, 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><script type="text/javascript">ac_as_info = {aid:"mm_115547023_13540164_54576858", serverbaseurl:"afpeng.alimama.com/",}</script>   <script type="text/javascript" src="https://afpmm.alicdn.com/g/mm/afp-cdn/JS/w.js"></script></div></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]);
			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',
					'/js/m_readerBg.js?20160720',
				]),
			]).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 = 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 `<dl>
						<dt>${json1.chapters[i].title}</dt>
						<dd><ul>${c}</ul></dd>
					</dl>`
				}).join('');

				$$('.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];
				document.body.appendChild(div);
				document.addEventListener('click', event=>{
					if(event.target == btn){
						div.classList.toggle('show');
						return event.preventDefault();
					}
					if(div.contains(event.target))
						return;
					div.classList.remove('show');
				});
			});
		});
	}else{
		updateMobilePage()
	}


	function updateMobilePage(){

	_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-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAhFBMVEUAAABwcHAAAAAPDw8mJibg4OBBQUHv7+/n5+dOTk4vLy8fHx8AAAAAAAAAAAD29vavr6+Tk5N1dXU5OTlsbGxYWFj5+fnOzs7FxcW6urqlpaWLi4uBgYHY2Nh1dXXKysqxsbFlZWUAAAAAAABra2uBgYGDg4N3d3elpaWXl5c0NDT///8HMrCeAAAAK3RSTlOz1AG4v/fE/fvLv7qSjU39+ffUwtHL/vv6+fj39fT07ebPvBPy1u3i4NzPM5mL/wAAAYBJREFUWMPtmceOgzAURQ04mDKE3iGQXu7//984bKYGDFgaaeSzvjp6er7ywia6rm89IgVvy2VEP74RabwduZD7JBp1siUy4TpPqo/rFAqFYgUGpYZU4Ymxk8z5GgawRtqMNGTgsJDK8cUVUERRAVSxDJ8ZAHlKSJoDgbl+fXaOrDAHc5Eht9cK9xYQOGTACQBrv84XbYCQfpwOsFlTH7ex4Df003k3Pqydu9TnPAc6G19WuuMj185CX899CflGwo39ImPccV9KfpByY7egkHaboTN/LWaHrLVn16UF+vjF7D3QzquP8azLzXm53RuwiYwZddllsO7uSODO+yReH7cGrPN45mwBtaCRVgBLplIJAyoq4jNLH3lqTK45beGXIvUpgNIWKlbJk9OxGqhM8Zuyno4Fw+1ymEgNARoGRIzD43IdT1wvD64UJ4E/HvCRkDlowHgA0JRQCZVQCVcLDQ2TaMZfCokdaRNENlEoFIp/hSdZJ/1hXPbTvfzPBenfH+9ViDEgemODEwAAAABJRU5ErkJggg==');
			transform:none;
		}
		#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;
		}
	`}, document.head);




	var data = $$('body script:not([src])')[0].textContent.match(/mReader\.initData\(([^}]+\}),/);
	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('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';

	_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();
		};
	}).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)'));
	}

	}//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);
}

})();