User:Liouxiao/test.js

維基文庫,自由的圖書館

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
//!!!! SECURITY PROBLEM
/*
//adjust vertical paragraph styles
var backup_content = "";
var optimized_content = "";
var optimized_done = false;
var target_div;
var isMobile = (document.getElementById('footer-places-mobileview') === null) ? true : false;
var u_agent = navigator.userAgent.toLowerCase();
var isFirefox = (u_agent.indexOf('firefox') !== -1) ? true : false;
var isChrome = (u_agent.indexOf("applewebkit/") !== -1 && u_agent.indexOf("khtml") > -1) ? true : false;
var opening_quote_margin_left = "-9px;";
var line_height = "1.5em";
if (isFirefox) {
 opening_quote_margin_left = "-5px;";
 line_height = "1.4em";
} else if (isChrome) {
 line_height = "1.48em";
}

var paragraphs = document.querySelectorAll("div#mw-content-text div.mw-parser-output");
if (paragraphs.length > 0) {
  backup_content = paragraphs[0].innerHTML;
  if (backup_content.indexOf('<div style="writing-mode:vertical-rl;') !== -1) {
    var ppq = document.querySelectorAll("div.prp-page-qualityheader");
    if (ppq.length > 0) {
      target_div = paragraphs[0];
      var cb = document.getElementById("optimize-cb");
      if (cb === null) {
        var toggle_title = '調整樣式:';
        var p_v_label = document.getElementById("p-variants-label");
        if (p_v_label !== null && p_v_label.innerHTML.indexOf('<span>简体</span>') !== -1) {
          toggle_title = '调整样式:';
        }
        ppq[0].innerHTML = ppq[0].innerHTML + '<span style="float:right">' + toggle_title + '<input id="optimize-cb" type="checkbox" disabled checked onclick="toggle_vertical_content(this)" /><span>';
        optimize_vertical_content(paragraphs[0], backup_content);

        setTimeout(post_optimization, 300);
      }
    }
  }
}

function post_optimization() {
  var cb = document.getElementById("optimize-cb");
  if (cb === null) {
    setTimeout(post_optimization, 300);
    return;
  }

  if (optimized_done === false) {
    // adjust_small_skchar
    var skchars = document.querySelectorAll("div > span.inlinecomment > span > img");
    if (skchars.length > 0) {
      var i;
      for (i = 0; i < skchars.length; i++) {
        skchars[i].width = "15";
        skchars[i].height = "15";
      }
    }

    // text node: punctuations
    var texts = document.querySelectorAll("div.mw-parser-output > div > div");
    var k;
    for (k = 0; k < texts.length; k++) {
      var t = texts[k].innerHTML;
      var ts = t.split(/<|>/);
      var t2 = "";
      var j;
      for (j = 0; j < ts.length; j++) {
        var s = ts[j];
        if (s.startsWith('img') || s.startsWith('div') || s.startsWith('span') || s.startsWith('p') || s.startsWith('a href')
          || s.startsWith('table ') || s === 'br' || s === 'pre' || s.startsWith('th') || s.startsWith('tr') || s.startsWith('td')) {
          // element start
          t2 = t2 + "<" + ts[j] + ">";
        } else if (ts[j].startsWith('/')) {
          // element end
          t2 = t2 + "<" + ts[j] + ">";
        } else {
          // text node: punctuations 「 」 “ ”
          t2 = t2 + ts[j].replace(/「/g, '<span style="display: inline-block; margin-left: -14px;">「</span>').replace(/」/g, '<span style="margin-left:-9px">」</span>').replace(/“/g, '<span style="display: inline-block; margin-left: ' + opening_quote_margin_left + '">“</span>').replace(/”/g, '<span style="margin-left:-9px">”</span>');
        }
      }
      texts[k].innerHTML = t2;
    }

    optimized_content = document.querySelectorAll("div#mw-content-text div.mw-parser-output")[0].innerHTML;
    optimized_done = true;
  }
  cb.disabled = false;
}

function optimize_vertical_content(element, content) {
  if (optimized_content === "") {
    var column_div_start = '<div style="width:2.5em; line-height:1.2em; float:right; margin:auto 0; border-right:gray dotted 1px; border-top:black double 3px; padding:5px 0"><div style="width:1.6em; margin:auto 0.5em;">';

    // paragraph to div: start
    optimized_content = content.replace(/vertical-rl/g, 'initial').replace(/float:right">\n<p><br>\n<\/p><p>/, 'float:right">\n'+column_div_start);

  // mobile (p to div)
  optimized_content = optimized_content.replace(/float:right">\n<p><br><\/p><p>/, 'float:right">\n'+column_div_start);

  // paragraph to div: middle
  optimized_content = optimized_content.replace(/<p><br>/g, column_div_start).replace(/<p>/g, column_div_start);

    // paragraph to div: end
    optimized_content = optimized_content.replace(/<\/p>/g, '</div></div>');


    // CJK space
    optimized_content = optimized_content.replace(/  ※此字在您的系/g, '  ※此字在您的系').replace(/ /g, '<div> </div>');

    // double-line comments: begin
  optimized_content = optimized_content.replace(/<span class="invisible">〈<\/span><span class="inlinecomment" style="display:inline-block;vertical-align:middle;"><span style="display:block">/g, '<span class="inlinecomment" style="display:inline-block; vertical-align:middle;float:right;width:3em;line-height:' + line_height + ';margin-right:-0.6em' + (isMobile? ';font-size:smaller' : '' ) + '"><span style="display:block;float:right;width:1.5em">');

  // double-line comments: middle
  optimized_content = optimized_content.replace(/<\/span><span style="display:block">/g, '</span><span style="display:block;float:right;width:1.5em">');

  // double-line comments: end
  optimized_content = optimized_content.replace(/<\/span><span class="invisible">〉<\/span>/g, '</span>');

    // SKchar
    if (!isMobile) {
     optimized_content = optimized_content.replace(/\.pdf\.jpg 2x" data-file-width="118" data-file-height="118"/g, '.pdf.jpg 2x" data-file-width="118" data-file-height="118" style="margin-left:-2px"');
  } else {
     optimized_content = optimized_content.replace(/\.pdf\.jpg" data-file-width="118" data-file-height="118"/g, 'SKQSfont.pdf.jpg" data-file-width="118" data-file-height="118" style="margin-left:-2px"');
  }

    // punctuations after skchar (1)
    optimized_content = optimized_content.replace(/style="margin-left:-2px">([,、。:;?!])/g, 'style="margin-left:-2px"><div style="display: inline-block; width: 6px">$1</div>');

    // punctuations after skchar (2)
    optimized_content = optimized_content.replace(/style="margin-left:-2px" width="20" height="20">([,、。:;?!])/g, 'style="margin-left:-2px" width="20" height="20"><div style="display: inline-block; width: 6px">$1</div>');
  }
  element.innerHTML = optimized_content;
}

function resume_vertical_content(element, content) {
  element.innerHTML = content;
}

function toggle_vertical_content(element) {
  if (element.checked === false) {
    resume_vertical_content(target_div, backup_content);
  } else {
    optimize_vertical_content(target_div, backup_content);
  }
}
*/