「MediaWiki:Common.js」の版間の差分

提供:WikiNebula
ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
6行目: 6行目:
   if (is_switched){
   if (is_switched){
     console.log("nebula_switch: 入れ替え後のページです");
     console.log("nebula_switch: 入れ替え後のページです");
   
 
    var view_tab = document.getElementById("ca-view");
     if (is_view_mode()){
     if (view_tab)
      var is_view_mode = view_tab.classList.contains("selected");
    else
      var is_view_mode = false;
    var is_not_ve_edit_mode = uri.searchParams.get("veaction") == null;
   
    if (is_view_mode && is_not_ve_edit_mode){
       console.log("nebula_switch: 閲覧モードです");
       console.log("nebula_switch: 閲覧モードです");
      var switch_tag = document.getElementById("nebula_switch");
      if (switch_tag){
        var parser = new Parser(switch_tag); // 未定義
        parser.parse();
        if (parser.is_failed)
          write_error("入れ替えタグが異常です。" + parser.failure_message);
          // 未定義
      }
      else
        console.log(
          "nebula_switch: 入れ替えタグが見つかりませんでした"
        );
       
     }else
     }else
       console.log(
       console.log(
36行目: 15行目:
   }
   }
}
}
  // ECMAScript 5 の構文で書かなければならないため、
 
  // class キーワードが使えない...
   function is_view_mode(){
   function Parser(switch_tag){
    var view_tab = document.getElementById("ca-view");
     if (this === undefined)  
     if (view_tab)
       throw new TypeError();
       var is_view_mode_selected
     this.switch_tag = switch_tag;
        = view_tab.classList.contains("selected");
     else
      var is_view_mode_selected = false;
    var is_not_ve_edit_mode = uri.searchParams.get("veaction") == null;
    return is_view_mode_selected && is_not_ve_edit_mode
   }
   }
  Parser.prototype = {
 
    constructor: Parser,
    parse: function(){
      var dom_parsed = (new DOMParser()).parseFromString(
        "<root>" + this.switch_tag.innerText + "</root>",
        "application/xml"
      );
      var is_invalid_node = function(node){
        return !["replace", "swap"].includes(node.nodeName.toLowerCase());
      };
      var invalid_nodes = Array.from(
        dom_parsed.children[0].children
      ).filter(is_invalid_node);
      if (invalid_nodes.length){
        this.failure_message = "\n不明な指示がありました\n"
          + invalid_nodes.map(
            function(node){return node.nodeName;}
          ).toString();
        console.log(this.failure_message);
      }
   
      this.is_failed = false;
    }
  };
my_switch();
my_switch();

2024年5月2日 (木) 08:13時点における版

/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */

function my_switch(){
  var uri = new URL(window.location.href);
  var is_switched = uri.searchParams.get("nebula_switch") != null;
  if (is_switched){
    console.log("nebula_switch: 入れ替え後のページです");

    if (is_view_mode()){
      console.log("nebula_switch: 閲覧モードです");
    }else
      console.log(
        "nebula_switch: 閲覧モードでないため、入れ替えは行いません"
      );
  }
}

  function is_view_mode(){
    var view_tab = document.getElementById("ca-view");
    if (view_tab)
      var is_view_mode_selected
        = view_tab.classList.contains("selected");
    else
      var is_view_mode_selected = false;
    var is_not_ve_edit_mode = uri.searchParams.get("veaction") == null;
    return is_view_mode_selected && is_not_ve_edit_mode
  }

my_switch();