사용자:하늘/light.js: 두 판 사이의 차이

편집 요약 없음
(Cerulean (토론)의 1358074판 편집을 되돌림)
태그: 편집 취소
51번째 줄: 51번째 줄:
var end = new Date().getTime();
var end = new Date().getTime();
console.log("time : " + (end - start));
console.log("time : " + (end - start));
}).done(
mw.loader.load('/index.php?title=User:cerulean/light.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('/index.php?title=User:cerulean/light.css&action=raw&ctype=text/css', 'text/css')
});
);
};
};



2021년 9월 24일 (금) 14:21 판

var doc = document;
var main = function (page) {
	var api_params = {
		action: 'parse',
		page: page,
		format: 'json',
		prop: ['text', 'categorieshtml'],
		disablelimitreport: 1,
		disablestylededuplication: 1,
		utf8: 1,
		formatversion: 'latest',
		redirects: 1
	};

	var api = new mw.Api();

	api.get(api_params).done(data => {
		console.log('done');
		var content = data.parse.text.replaceAll('\n', '').replaceAll('\\', "").replaceAll('href="', 'data-href="'); //이스케이프 문자, 링크 제거

		doc.querySelector('html').innerHTML = content; //내용 갈아치우기
		doc.getElementsByClassName('mw-parser-output')[0].id = "mw-content-text"; // 오류 무시

		var links = doc.querySelectorAll('a:not(.external):not(.new)'); //외부링크 구현 문제, 내부 링크 선택
		var linksSize = links.length; //배열 크기 구하기
		var docTitle; //var docTitle == var page                
		var isinternalLink = true;

		// var toLink = function() {};
		var toLink = function (link) {
			var href = link.target.dataset.href;
			if (href.includes('index.php') === true) {
				console.log(href);
				window.open(href);
			} else {
				console.log(docTitle);
				docTitle = decodeURI(href.split("/").pop());
				main(docTitle); //본 함수 반복
				isinternalLink = false;
			}
		}; //내부 링크
		//var getLink = function(link) {
		//  docTitle = decodeURI(link.target.dataset.href.split("/").pop());
		//}; //편집 버튼, 문단 링크
		var start = new Date().getTime();
		for (var i = 0; i < linksSize; i++) {
			links[i].onclick = toLink;
			//l_link.onmouseover = getTitle;
		}
		var end = new Date().getTime();
		console.log("time : " + (end - start));
		mw.loader.load('/index.php?title=User:cerulean/light.css&action=raw&ctype=text/css', 'text/css');
	});
};

var lightWikiOn = document.createElement('span');
lightWikiOn.className = "dropdown-item";
lightWikiOn.innerText = "라이트 모드";
lightWikiOn.onclick = function () {
	main(decodeURI(window.location.href.split("/wiki/").pop()));
};

doc.querySelector('.dropdown-item[title="사용자 환경 설정"]').before(lightWikiOn);