Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ver. 0.7
- (function() {
- function run(gdArticle) {
- var gdDictname = gdArticle.getElementsByClassName('gddictname'),
- gdDictContentArr = [];
- gdDictContentArr.push(new Array(gdDictname[0], getSiblings(gdDictname[0])));
- gdDictContentArr.forEach(function(item, i) {
- item[0].classList.add('gd_dictname', 'gd_article_exp');
- item[0].addEventListener('click', function(event) {
- toggleContent(item[0], item[1]);
- event.stopPropagation();
- });
- });
- var dslArticle = gdArticle.getElementsByClassName('dsl_article'),
- dslWithOptArr = [];
- for (var i = 0; i < dslArticle.length; i++) {
- var dslArticleEl = dslArticle[i];
- var dslHeadword;
- if (dslArticleEl.querySelector('.dsl_opt')) {
- dslHeadword = getElement(getElement(dslArticleEl, 'gddefinition', 'parentElement'), 'gdheadword', 'previousElementSibling');
- dslWithOptArr.push(new Array(dslHeadword, dslArticleEl));
- }
- }
- dslWithOptArr.forEach(function(item, i) {
- item[0].classList.add('dsl_headword_plus');
- item[0].addEventListener('click', function(event) {
- toggleOpt(item[0], item[1]);
- event.stopPropagation();
- });
- });
- }
- function getElement(elem, cls, method) {
- while ((elem = elem[method]) && !elem.classList.contains(cls));
- return elem;
- }
- function getSiblings(node) {
- var nodeArr = [];
- while (node = node.nextElementSibling) {
- nodeArr.push(node);
- }
- return nodeArr;
- }
- function toggleOpt(headword, definition) {
- var optContent = definition.getElementsByClassName('dsl_opt');
- for (var i = optContent.length - 1; i >= 0; i--) {
- optContent[i].classList.toggle('dsl_opt_visible');
- }
- headword.classList.toggle('dsl_headword_plus');
- headword.classList.toggle('dsl_headword_minus');
- }
- function toggleContent(dictname, article) {
- article.forEach(function(item, i) {
- article[i].classList.toggle('content_hidden');
- });
- dictname.classList.toggle('gd_article_exp');
- dictname.classList.toggle('gd_article_hidden');
- }
- // Start
- var scr = document.getElementsByTagName('script');
- scr = scr[scr.length - 1];
- var selfDict = getElement(scr, 'gdarticle', 'parentElement');
- selfDict.style.display = 'none';
- selfDict.previousElementSibling.style.display = 'none';
- if (!document.getElementById('optCss')) {
- var gdArticles = document.body.getElementsByClassName('gdarticle');
- // console.log(gdArticles.length);
- if (gdArticles.length > 1) {
- for (var i = 0; i < gdArticles.length - 1; i++) {
- gdArticles[i].ready = true;
- run(gdArticles[i]);
- }
- }
- ///////////////////
- var ready, check, observer,
- listeners = [],
- MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
- ready = function ready(fn) {
- listeners.push({
- fn: fn
- });
- if (!observer) {
- observer = new MutationObserver(check);
- observer.observe(document.body, {
- childList: true,
- subtree: false
- });
- }
- };
- check = function check(mutationRecords) {
- var mutationScriptArr = [];
- mutationRecords.map(function(mutation) {
- if ((mutation.type === 'childList') && (mutation.addedNodes[0].localName === 'script')) {
- mutationScriptArr.push(mutation.addedNodes[0]);
- return;
- }
- });
- var element, listener = listeners[0];
- mutationScriptArr.forEach(function(item, i) {
- element = getElement(item, 'gdarticle', 'previousElementSibling');
- if (!element.ready) {
- element.ready = true;
- listener.fn.call(element, element);
- }
- });
- };
- ///////////////////
- var style = document.createElement('style');
- var cssString = (function() {/*
- .dsl_headword_plus::after{content:"+";border:1px solid #ccc;border-radius:3px;color:red;font-size:0.8em;font-weight:normal;margin-left:0.5em;padding:0 0.15em;}
- .dsl_headword_minus::after{content:"-";border:1px solid #ccc;border-radius:3px;color:gray;font-size:0.8em;font-weight:normal;margin-left:0.5em;padding:0 0.15em;}
- .dsl_opt, .content_hidden{display:none;}
- .dsl_opt_visible, .gdheadword>p{display:inline;}
- .gd_dictname{border-top:0;margin-top:8px;margin-bottom:5px;clear:right;}
- .gd_article_exp::after{margin-left:0.5em;content:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMCIgaGVpZ2h0PSIxMSIgdmlld0JveD0iMCAwIDIwIDExIj48cGF0aCBmaWxsPSIjODA4MDgwIiBkPSJtMC41IDFjMC0wLjEzIDAuMDUtMC4yNiAwLjE1LTAuMzUgMC4yLTAuMTkgMC41MS0wLjE5IDAuNzEgMGw4LjY1IDguNjUgOC42NS04LjY1YzAuMi0wLjE5IDAuNTEtMC4xOSAwLjcxIDBzMC4yIDAuNTEgMCAwLjcxbC05IDljLTAuMTkgMC4yLTAuNTEgMC4yLTAuNzEgMGwtOS05Yy0wLjEtMC4xLTAuMTUtMC4yMy0wLjE1LTAuMzVsMCAweiI+PC9wYXRoPjwvc3ZnPg==')}
- .gd_article_hidden::after{margin-left:0.5em;content:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMCIgaGVpZ2h0PSIxMSIgdmlld0JveD0iMCAwIDIwIDExIj48cGF0aCB0cmFuc2Zvcm09InJvdGF0ZSgxODAgMTAuMDEwMDAwMjI4ODgxODM2LDUuNTA4NzUwNDM4NjkwMTg2KSIgZmlsbD0icmVkIiBkPSJtMC41IDFjMC0wLjEzIDAuMDUtMC4yNiAwLjE1LTAuMzUgMC4yLTAuMTkgMC41MS0wLjE5IDAuNzEgMGw4LjY1IDguNjUgOC42NS04LjY1YzAuMi0wLjE5IDAuNTEtMC4xOSAwLjcxIDBzMC4yIDAuNTEgMCAwLjcxbC05IDljLTAuMTkgMC4yLTAuNTEgMC4yLTAuNzEgMGwtOS05Yy0wLjEtMC4xLTAuMTUtMC4yMy0wLjE1LTAuMzVsMCAweiI+PC9wYXRoPjwvc3ZnPg==')}
- */}).toString().split('\n').slice(1, -1).join('\n');
- style.id = 'optCss';
- style.innerHTML = cssString;
- document.getElementsByTagName('head')[0].appendChild(style);
- ready(function(element) {
- run(element);
- });
- }
- }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement