共有ページ作成コンポーネント(仮置きなので後で統合)

まて!これは孔明の罠だ!

ここはSCP Wiki内部で使われているテンプレートページです。

スタッフの許可なしに
このページを触れないでください


共有ページは複数人で自由帳を使うための新システムです。現在はベータテストとしてスタッフ・コントリビュータを務めているメンバーに対してのみ共有ページの新規作成が認められています。あなたがSCP-JPのサイトスタッフもしくはコントリビュータでないなら、共有ページを新規作成しないでください(権限設定の関係上、スタッフにしか作成は行えません。スタッフに代理で作成してもらってください)。ページを作成したら、運営Discordの「#サンドボックス3」チャンネルでの報告を必ず行って下さい。
また、サンドボックスⅢ利用ガイドで規定される通り、タグの直接編集やリネームは共有ページにおいても禁止です。

共有ページはA類とB類の二種類が存在します。これらはジャンルタグによって識別されるため、A類/B類のジャンルタグを作成時の設定以降は弄らないでください。

A類: 共著・共訳、あるいは非剪定対象の「合作-jp」タグが付くページの下書きに用いるページです。通常の下書きページと同様に、批評ステータスの設定が許可されており、「批評中」にすると通常の下書きリストに混じって表示されます。作成者はその共有ページのディスカッションに編集権を認めるメンバーあるいは役職を列挙する必要があります(ポストを編集することで、後から認可メンバーを増減することができます)。スタッフやOPが業務で干渉する場合があることを除けば、それに該当するメンバーにのみ自由な編集が許されます。ただし、大規模編集・批評ステータスの変更・ページの削除などに関しては、編集権所持者の間で別途合意を得た方がいいでしょう。編集権を所持していないメンバーは共有ページを編集しないでください。勝手な編集を確認したらOPに報告してください。

B類:「準要注意団体-JP総攬」「機動部隊調査2016」などのメインサイトに投稿されない資料集・調査プロジェクトが該当します。B類のページを作成するにはOP合議のもとの認可が必要です。B類のページはSCP-JPのサイトメンバーなら誰しもが情報をアップデートすることができます。ただし、批評ステータスの設定・ページ削除はしてはいけません。したい際はOPに相談してください。適切な理由が認められた場合に許可が出されます。また、所謂「荒らし」的な編集があった場合も連絡してください。試用運転中、B類の申請は受け付けていません。

共有ページの仕様に関して、気になったことや意見・希望等があればスタッフまで連絡をお願いします。

共有ページ作成

現在改修中です
ページを作成したい場合は
shu_yabiyabishu_yabiyabiに報告してくださると
助かります


b7e26165-1711947620229-categorya

CC3.0 BY-SA
http://scp-jp-sandbox3.wikidot.com/component:user-page-manager/
製作者: C-takeC-take
1.新しい下書きを作成

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
 
<head>
    <title>Auto Numbering Draft Creater</title>
</head>
<style>
@import url("https://scp-jp.github.io/files/util/common/styles/off-canvas.css");
 
body{
padding:0;
background-color: transparent !important;
}
 
.fake-link{
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
height:100%;
width:100%;
}
 
#LinkSentence {
    display: flex;
    justify-content: center;
    align-items: center;
}
 
@media (max-width: 580px) {
#LinkSentence {
    font-size: 0.7em;
}
}
 
@media (min-width: 581px) {
#LinkSentence {
    font-size: 27px;
}
}
 
</style>
<script type="text/javascript" src="https://scp-jp-sandbox3.wdfiles.com/local--code/component%3Auser-page-manager/6"></script>
<script type="text/javascript" src="https://scp-jp.wdfiles.com/local--code/scpmetatitlesearch/4"></script>
<script type="text/javascript">
 
var mySite = "http://scp-jp-sandbox3.wikidot.com/"
var userName = "";
window.onload = function(){
    var showLinkArea = document.getElementById("link");
    var checkWidthElm = document.getElementById("LinkSentence");
    var ElmLen = checkWidthElm.innerHTML.length;
    if(userTerminalData.Os == "iOS"){
    ElmLen++;
    }
    var defaultFontSize = Math.floor(getSentenceWidth()/ElmLen);
    showLinkArea.style.fontSize = defaultFontSize + "px";
    resizeLinkSentence();
    var myURL= location.href;
    var settingParamName = {
     name:"name=",
     cat:"cat=",
     createdBy:"createdBy=",
     currentdraft:"currentdraft=",
     accountname:"accountname="
    }
    var settingParam = {
     name:"",
     cat:"",
     createdBy:"",
     currentdraft:"",
     accountname:""
    }
 
    if(myURL.indexOf("#") > 0){
     var tmpURLArray = ((myURL.split("#"))[1]).split(",");
     for(var i = 0; i < tmpURLArray.length;i++){
     for(var j in settingParam){
     if(tmpURLArray[i].indexOf(settingParamName[j]) == 0){
     settingParam[j] = decodeURIExtension(tmpURLArray[i].split(settingParamName[j]).join(""));
     delete settingParamName[j];
     break;
     }
     }
     }
    }
    var pageName = settingParam.name;
    pageName = pageName.toLowerCase();
    var baseName = settingParam.currentdraft;
    baseName = baseName.toLowerCase();
    var testRegex = new RegExp("^"+settingParam.createdBy);
    if(baseName.match(testRegex)){
        baseName = baseName.replace(testRegex, "");
    }else{
             testRegex = new RegExp("^"+ setEscapeCode(settingParam.accountname));
             if(baseName.match(testRegex)){
                 baseName = baseName.replace(testRegex, "");
             }
        }
        testRegex = null;
        if(baseName.match(/^\-/g)){
             baseName = baseName.replace(/^\-/g, "");
        }
    baseName = baseName.replace(/[^a-z0-9:\]\[]/g, "-");
    while(baseName.indexOf("--") >= 0){
     baseName = baseName.replace( /--/g , "-" ) ;
    }
    userName = settingParam.createdBy;
    baseName = baseName + "-";
    var nowNo = baseName;
    if(nowNo.indexOf("-") >= 0){
     nowNo = (nowNo.split("-"))[0];
    }else{
    nowNo = "1";
    }
    nowNo = parseInt(nowNo);
    if(isNaN(nowNo)){
     nowNo = "";
    }else{
     nowNo++;
     nowNo += "-";
    }
    var unique = "";
    var digit = 0;
    for(var i = 0;i < 8;i++){
     digit = Math.floor(Math.random() * 16);
     unique += digit.toString(16);
    }
    var nowT = new Date().getTime();
    var Links = document.createElement("span");
    Links.setAttribute("onclick","GoToLink('"+mySite+"sharedpage:" + unique + "-" + nowT + "-categorya/parentPage/sharepage-list/#_editpage');");
    Links.setAttribute("class","fake-link");
    Links.setAttribute("id",checkWidthElm.getAttribute("id"));
    Links.innerHTML = checkWidthElm.innerHTML;
    showLinkArea.replaceChild(Links,checkWidthElm);
    checkWidthElm = Links;
    window.addEventListener('resize', function (event) {
     resizeLinkSentence();
    });
 
    function getSentenceWidth(){
     var left = checkWidthElm.getBoundingClientRect().left;
     var right = checkWidthElm.getBoundingClientRect().right;
     return (right-left);
    }
 
    function resizeLinkSentence(){
 
     var pageWidth = window.innerWidth;
 
     var fontSize = 0;
     fontSize = Math.floor(pageWidth/ElmLen);
     if(fontSize > defaultFontSize){
     fontSize = defaultFontSize;
     }
     showLinkArea.style.fontSize = fontSize+"px";
     var fontHeight = fontSize;
     if(userTerminalData.Os == "iOS"){
     fontHeight = Math.floor(pageWidth/(ElmLen-1));
     if(fontHeight > defaultFontSize){
     fontHeight = defaultFontSize;
     }
     fontHeight += 5;
     }
     var inHeight = window.innerHeight;
     inHeight -= (fontHeight+5);
 
    }
 
}
function GoToLink(url){
    var userNameL;
    try{
        userNameL = window.parent.getName.UserName;
    }catch(e){
        alert("サインイン未取得");
        return;
    }
    window.parent.location.href = url;
}
 
</script>
<body>
<div id="link" style='font-size:200%; text-align: center;'>
<span id="LinkSentence">新しい共有ページを作成する(A類)</span>
</div>
<div style="width:100%;height:1px;"></div>
</body>
</html>

2.下書き表示用パラメータ取得Js

/*
下書き一覧でパラメータを解析するスクリプト
 */
//親ページのURLを解析する
var PageSetting = new Object();
PageSetting.getParent = true;
PageSetting.currentParam = decodeURIExtension(document.referrer);
if ((!PageSetting.currentParam)||(new URL(PageSetting.currentParam).pathname.length<=1)) {
    PageSetting.currentParam = "http://scp-jp-sandbox3.wikidot.com/sharepage-list";
    PageSetting.getParent = false;
}
PageSetting.myPage = (function () {
    var tmpURL = PageSetting.currentParam.split("http://").join("").split("/");
    return "http://" + tmpURL[0] + "/" + tmpURL[1];
})();
PageSetting.currentParam = PageSetting.currentParam.split(PageSetting.myPage).join("");
PageSetting.OrderParam = "";
if (PageSetting.currentParam.indexOf("/order/") >= 0) {
    PageSetting.OrderParam = PageSetting.currentParam.substring(PageSetting.currentParam.indexOf("/order/"), PageSetting.currentParam.length);
}
PageSetting.TagsParam = "";
if (PageSetting.currentParam.indexOf("/tag/") >= 0) {
    var tmpCurrentParam = PageSetting.currentParam;
    if (PageSetting.OrderParam.length > 0) {
        tmpCurrentParam = tmpCurrentParam.split(PageSetting.OrderParam).join("");
    }
    PageSetting.TagsParam = tmpCurrentParam;
    if (PageSetting.TagsParam.charAt(PageSetting.TagsParam.length - 1) == "/") {
        PageSetting.TagsParam = PageSetting.TagsParam.substring(0, PageSetting.TagsParam.length - 1);
    }
}

3.カスタム検索jsコード

/*検索選択肢の生成用オブジェクト*/
// <表示>:<タグ>
 
var SearchTags = {
    Category: {
        "SCP-JP": "_scp-jp",
        "GoIF-JP": "_goi-format-jp",
        "Tale-JP": "_tale-jp",
        "翻訳 (英語)": "_en",
        "翻訳 (その他)": "_ru,_ko,_cn,_fr,_pl,_es,_th,_de,_it,_ua,_pt-br,_cz,_zh-tr,_vn,_otherlang",
        "その他": "_others",
        "未定義": "_null"
    },
 
    /*ジャンル設定*/
    Genre: {
        "A類": "_category-a",
        "B類": "_category-b",
        "ジョーク": "_joke",
        "ホラー": "_horror",
        "SF": "_sf",
        "オカルト・都市伝説": "_occult",
        "サスペンス": "_suspense",
        "感動系": "_excitement",
        "シュール": "_sur",
        "コミカル": "_comical",
        "メタフィクション": "_metafiction",
        "アダルト": "_adult",
        "既存記事改稿": "_reforming-g",
        "コンテスト": "_contest",
        "その他": "_others-g"
    },
 
    /*ステータス設定*/
    State: {
        "作業中": "-_criticism-in,-_reforming,-_criticism-end",
        "批評中": "_criticism-in",
        "批評中断": "_reforming",
        "批評終了": "_criticism-end"
    }
}
 
/*ジャンル、カテゴリ選択用要素格納*/
var SettingAreaObj = {
    Category: [],
    Genre: [],
    State: []
}
 
/*ジャンルカテゴリ選択用クラス格納*/
var SelectedClassNames = {
    Category: {
        Base: "CategoryBase",
        Default: "CDefault",
        Selected: "CSelected"
    },
    Genre: {
        Base: "GenreBase",
        Default: "GDefault",
        Or: "GOrSelected",
        And: "GSelected"
    },
    State: {
        Base: "StateBase",
        Default: "SDefault",
        Selected: "SSelected"
    }
}
 
var searchForm;
 
document.addEventListener("DOMContentLoaded", function () {
    searchForm = document.getElementById("searchsetting");
    setSelecters("Category");
    setSelecters("Genre");
    setSelecters("State");
    SearchTags["MinusCategory"] = new Object();
    var tmpValue = "";
    var minusValue = "";
    for (var i in SearchTags.Category) {
        tmpValue = SearchTags.Category[i].split(",");
        minusValue = "";
        for (var j = 0; j < tmpValue.length; j++) {
            minusValue += (((j > 0) ? "," : "") + "-" + tmpValue[j]);
        }
        SearchTags.MinusCategory[i] = minusValue;
    }
 
    //URLの状態からカスタム検索の状態を復帰させる
    if (PageSetting.TagsParam.length > 0) {
        var tmpParam = PageSetting.TagsParam;
        //カテゴリ復帰
        var tmpMinus = new Object();
        var categoryFlag = false;
        var targetClass;
        for (var i in SearchTags.MinusCategory) {
            tmpMinus[i] = SearchTags.MinusCategory[i];
        }
        for (var i in tmpMinus) {
            if (tmpParam.indexOf(tmpMinus[i]) >= 0) {
                categoryFlag = true;
                tmpParam = tmpParam.split(tmpMinus[i]).join("");
                delete tmpMinus[i];
            }
        }
        if (categoryFlag) {
            targetClass = SelectedClassNames.Category;
            for (var i = 0; i < SettingAreaObj.Category.length; i++) {
                for (var j in tmpMinus) {
                    if (SettingAreaObj.Category[i].innerHTML == j) {
                        SettingAreaObj.Category[i].removeAttribute("class");
                        SettingAreaObj.Category[i].setAttribute("class", targetClass.Base + " " + targetClass.Selected);
                        delete tmpMinus[j];
                    }
                }
            }
        }
        tmpMinus = undefined;//dispose
 
        //ジャンル復帰
        var tmpGenre = new Object();
        for (var i in SearchTags.Genre) {
            tmpGenre[i] = SearchTags.Genre[i];
        }
        targetClass = SelectedClassNames.Genre;
        var tmpParamArray = tmpParam.split(",");
        tmpParamArray[0] = tmpParamArray[0].split("/tag/").join("");
        for (var i = 0; i < tmpParamArray.length; i++) {
            for (var j in tmpGenre) {
                if (tmpParamArray[i] == tmpGenre[j]) {
                    restoreGenre(j, targetClass.Or);
                    delete tmpGenre[j];
                } else if (tmpParamArray[i] == ("%2b" + tmpGenre[j])) {
                    restoreGenre(j, targetClass.And);
                    delete tmpGenre[j];
                }
 
            }
        }
        //ステータス復帰
        var tmpState = new Object();
        var StateLoop = 0;    //ゴリ押し
        for (var i in SearchTags.State) {
            tmpState[i] = SearchTags.State[i];
        }
        targetClass = SelectedClassNames.State;
        for (var i = 0; i < tmpParamArray.length; i++) {
            for (var j in tmpState) {
                console.log(tmpState.length);
                if (tmpParamArray[i] == tmpState[j].split(",")[0]) {
                    console.log("同一: " + tmpParamArray[i]);
                    console.log(tmpState);
                    SettingAreaObj.State[StateLoop].setAttribute("class", targetClass.Base + " " + targetClass.Selected);
                }
                StateLoop++;
            }
        }
        console.log(tmpParamArray);
        tmpGenre = undefined;//dispose
        tmpParamArray = undefined;//dispose
        tmpParam = undefined;//dispose
    }
 
    function setSelecters(typeName) {
        var newSelecter;
        //カテゴリ選択欄生成
        var targetBase = document.getElementById(typeName + "Area");
        var classN = SelectedClassNames[typeName];
        var targetSetting = SearchTags[typeName];
        for (var i in targetSetting) {
            if (targetSetting[i] == "_null") continue;
            newSelecter = document.createElement("span");
            newSelecter.setAttribute("class", classN.Base + " " + classN.Default);
            newSelecter.setAttribute("onclick", "changeState(this,'" + typeName + "');");
            newSelecter.innerHTML = i;
            targetBase.appendChild(newSelecter);
            SettingAreaObj[typeName].push(newSelecter);
 
        }
 
    }
 
    function restoreGenre(keyName, applyClass) {
        for (var i = 0; i < SettingAreaObj.Genre.length; i++) {
            if (SettingAreaObj.Genre[i].innerHTML == keyName) {
                SettingAreaObj.Genre[i].removeAttribute("class");
                SettingAreaObj.Genre[i].setAttribute("class", SelectedClassNames.Genre.Base + " " + applyClass);
                break;
            }
        }
    }
 
});
 
//カテゴリ及びジャンルを選択した時の表示切替
function changeState(elm, selectType) {
    //html要素のクラスを切り替える
    var oldClass = elm.getAttribute("class");
    elm.removeAttribute("class");
    var BaseClass = SelectedClassNames[selectType]["Base"] + " ";
    oldClass = oldClass.split(BaseClass).join("");
    switch (selectType) {
        case "Category":
            switch (oldClass) {
                case SelectedClassNames.Category.Default:
                    elm.setAttribute("class", BaseClass + SelectedClassNames.Category.Selected);
 
                    break;
                case BaseClass + SelectedClassNames.Category.Selected:
                    elm.setAttribute("class", BaseClass + SelectedClassNames.Category.Default);
                    break;
                default:
                    //万が一のバグ時救済
                    elm.setAttribute("class", BaseClass + SelectedClassNames.Category.Default);
                    break;
            }
            break;
        case "Genre":
            switch (oldClass) {
                case SelectedClassNames.Genre.Default:
                    elm.setAttribute("class", BaseClass + SelectedClassNames.Genre.And);
                    break;
                case SelectedClassNames.Genre.And:
                    elm.setAttribute("class", BaseClass + SelectedClassNames.Genre.Or);
                    break;
                case SelectedClassNames.Genre.Or:
                    elm.setAttribute("class", BaseClass + SelectedClassNames.Genre.Default);
                    break;
                default:
                    //万が一のバグ時救済
                    elm.setAttribute("class", BaseClass + SelectedClassNames.Genre.Default);
                    break;
            }
            break;
        case "State":
            switch (oldClass) {
                case SelectedClassNames.State.Default:
                    for (var i in SettingAreaObj.State) {
                        SettingAreaObj.State[i].setAttribute("class", BaseClass + SelectedClassNames.State.Default);
                    }
                    elm.setAttribute("class", BaseClass + SelectedClassNames.State.Selected);
 
                    break;
                case BaseClass + SelectedClassNames.State.Selected:
                    elm.setAttribute("class", BaseClass + SelectedClassNames.State.Default);
                    break;
                default:
                    //万が一のバグ時救済
                    elm.setAttribute("class", BaseClass + SelectedClassNames.State.Default);
                    break;
            }
            break;
    }
}
 
function search() {
    var StateClass = "";
    var isSelectCategory = false;
    var BaseClass = "";
    var keyName = "";
    var tagParam = "";
 
    /*ジャンル検索設定*/
    BaseClass = SelectedClassNames.State.Base + " ";
    var andParam = "";
    for (var i = 0; i < SettingAreaObj.State.length; i++) {
        StateClass = (SettingAreaObj.State[i].getAttribute("class")).split(BaseClass).join("");
        keyName = SettingAreaObj.State[i].innerHTML;
        if (StateClass == SelectedClassNames.State.Selected) {
            andParam += SearchTags.State[keyName];
            break;
        }
    }
    console.log(andParam);
    BaseClass = SelectedClassNames.Genre.Base + " ";
    var orParam = "";
    var cunma = "";
    for (var i = 0; i < SettingAreaObj.Genre.length; i++) {  //ここでURLを生成している OR/ANDの実装にはこの辺と後URL解析部分も必要
        StateClass = (SettingAreaObj.Genre[i].getAttribute("class")).split(BaseClass).join("");
        keyName = SettingAreaObj.Genre[i].innerHTML;
        switch (StateClass) {
            case SelectedClassNames.Genre.And:
                andParam += ("," + "%2b" + SearchTags.Genre[keyName]);
 
                break;
            case SelectedClassNames.Genre.Or:
                cunma = ((orParam.length > 0) ? "," : "");
                orParam += (cunma + SearchTags.Genre[keyName]);
                break;
        }
    }
    addTagParam(andParam);
    addTagParam(orParam);
    /*カテゴリ検索設定生成*/
    var CategoryClone = new Object();
    for (var i in SearchTags.Category) {
        CategoryClone[i] = SearchTags.Category[i];
    }
 
    BaseClass = SelectedClassNames.Category.Base + " ";
 
    for (var i = 0; i < SettingAreaObj.Category.length; i++) {
        StateClass = (SettingAreaObj.Category[i].getAttribute("class")).split(BaseClass).join("");
        if (StateClass == SelectedClassNames.Category.Selected) {
            keyName = SettingAreaObj.Category[i].innerHTML;
            isSelectCategory = true;
            delete CategoryClone[keyName];
        }
        keyName = "";
    }
    if (isSelectCategory) {
        var MinusValue = "";
        var MinusValueArray;
        for (var i in CategoryClone) {//categorycloneが大事そう メモ
            addTagParam(SearchTags.MinusCategory[i]);
            //console.log(SearchTags.MinusCategory[i]);
            //console.log(i);
            MinusValue = "";
        }
    }
 
    if (tagParam.length > 0) {
        tagParam = "/tag/" + tagParam;
    }
    window.parent.location = PageSetting.myPage + tagParam + PageSetting.OrderParam;
    function addTagParam(addState) {
        if (addState.length <= 0) {
            return;
        }
        var cunma = ((tagParam.length > 0) ? "," : "");
        tagParam += (cunma + addState);
    }
}

4.UserNameGet

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
    <title>GetUser</title>
<script type="text/javascript" src="http://ja.scp-wiki.net/scpmetatitlesearch/code/4"></script>
<script type="text/javascript">
 
var UserName = decodeURIExtension((window.location.href.split("#"))[1]);
</script>
</head>
<body>
 
</body>
</html>

5.ID指定 単一ターゲット型 iframeワンライン調整スクリプト

var ctrlLineWidth = {
    value:"",
    actualValue:"",
    baseFontSize:16,
    baseActualFontSize:0,
    translateSize:100,
    targetFontSize:0,
    targetId:"",
    targetElement:undefined,
    ctrlFontSize:(function(){}),
    overValue:undefined,
    setup:undefined
}
 
//フォントサイズ調整実行
ctrlLineWidth.ctrlFontSize = function(){
    //デフォルト設定付与
    ctrlLineWidth.actualValue = ctrlLineWidth.value;
    ctrlLineWidth.targetElement.innerHTML = ctrlLineWidth.actualValue;
    ctrlLineWidth.targetElement.style.fontSize = ctrlLineWidth.baseActualFontSize + "px";
    var actualFont = ctrlLineWidth.baseActualFontSize;
    var stringWidth = strLength(ctrlLineWidth.actualValue) * actualFont;
    var pageWidth = window.innerWidth;
    //文章横幅がWindowを超過していた場合
    if(stringWidth > pageWidth){
     //超過時に内容を変えるメソッドが用意されていた場合
     if(ctrlLineWidth.overValue){
     ctrlLineWidth.actualValue = ctrlLineWidth.overValue();
     ctrlLineWidth.targetElement.innerHTML = ctrlLineWidth.actualValue;
     stringWidth = strLength(ctrlLineWidth.actualValue) * actualFont;
     if(ctrlLineWidth.overValue){
     changeFontSize();
     }
     return;
     }
     changeFontSize();
    }
    //適切なフォントサイズを計算し、付与
    function changeFontSize(){
     var smartsize = Math.floor(pageWidth/strLength(ctrlLineWidth.actualValue));
     ctrlLineWidth.targetElement.style.fontSize = smartsize + "px";
 
    }
 
    //全角/半角を区別してカウントする
    function strLength(strSrc){
     len = 0;
     strSrc = escape(strSrc);
     for(i = 0; i < strSrc.length; i++, len++){
     if(strSrc.charAt(i) == "%"){
     if(strSrc.charAt(++i) == "u"){
     i += 3;
     len++;
     }
     i++;
     }
     }
     len = Math.ceil(len.toString() / 2);
     return len;
    }
 
}
 
//フォントサイズ調整及びイベント紐付け
ctrlLineWidth.setup = function(){
    if(ctrlLineWidth.targetId.lenth == 0){
     return;
    }
    ctrlLineWidth.targetElement = document.getElementById(ctrlLineWidth.targetId);
    ctrlLineWidth.baseActualFontSize = Math.floor(ctrlLineWidth.baseFontSize * (ctrlLineWidth.translateSize/100));
    ctrlLineWidth.ctrlFontSize();
    window.addEventListener('resize', function (event) {
        ctrlLineWidth.ctrlFontSize();
    });
 
};

6:端末判定
var userTerminalData = (function () {
    var os, ua = navigator.userAgent;
 
    if (ua.match(/Win(dows )?NT 10\.0/)) {
        os = "Windows 10";                // Windows 10 の処理
    } else if (ua.match(/Win(dows )?NT 6\.3/)) {
        os = "Windows 8.1";                // Windows 8.1 の処理
    } else if (ua.match(/Win(dows )?NT 6\.2/)) {
        os = "Windows 8";                // Windows 8 の処理
    } else if (ua.match(/Win(dows )?NT 6\.1/)) {
        os = "Windows 7";                // Windows 7 の処理
    } else if (ua.match(/Win(dows )?NT 6\.0/)) {
        os = "Windows Vista";                // Windows Vista の処理
    } else if (ua.match(/Win(dows )?NT 5\.2/)) {
        os = "Windows Server 2003";            // Windows Server 2003 の処理
    } else if (ua.match(/Win(dows )?(NT 5\.1|XP)/)) {
        os = "Windows XP";                // Windows XP の処理
    } else if (ua.match(/Win(dows)? (9x 4\.90|ME)/)) {
        os = "Windows ME";                // Windows ME の処理
    } else if (ua.match(/Win(dows )?(NT 5\.0|2000)/)) {
        os = "Windows 2000";                // Windows 2000 の処理
    } else if (ua.match(/Win(dows )?98/)) {
        os = "Windows 98";                // Windows 98 の処理
    } else if (ua.match(/Win(dows )?NT( 4\.0)?/)) {
        os = "Windows NT";                // Windows NT の処理
    } else if (ua.match(/Win(dows )?95/)) {
        os = "Windows 95";                // Windows 95 の処理
    } else if (ua.match(/Windows Phone/)) {
        os = "Windows Phone";                // Windows Phone (Windows 10 Mobile) の処理
    } else if (ua.match(/iPhone|iPad/)) {
        os = "iOS";                    // iOS (iPhone, iPod touch, iPad) の処理
    } else if (ua.match(/Mac|PPC/)) {
        os = "Mac OS";                    // Macintosh の処理
    } else if (ua.match(/Android ([\.\d]+)/)) {
        os = "Android " + RegExp.$1;            // Android の処理
    } else if (ua.match(/Linux/)) {
        os = "Linux";                    // Linux の処理
    } else if (ua.match(/^.*\s([A-Za-z]+BSD)/)) {
        os = RegExp.$1;                    // BSD 系の処理
    } else if (ua.match(/SunOS/)) {
        os = "Solaris";                    // Solaris の処理
    } else {
        os = "N/A";                    // 上記以外 OS の処理
    }
    var smartPhone = false;
    smartPhone = ((ua.indexOf('iPhone') > 0 && ua.indexOf('iPad') == -1) || ua.indexOf('iPod') > 0 || ua.indexOf('Android') > 0);
 
    var browser = 'unknown';
    if (ua.indexOf('Edge') !== -1) {
        browser = 'edge';
    } else if (ua.indexOf('Chrome') !== -1) {
        browser = 'chrome';
    } else if (ua.indexOf('Safari') !== -1) {
        browser = 'safari';
    }
    if (ua.indexOf('Firefox') !== -1) {
        browser = 'firefox';
    }
    if (ua.indexOf('MSIE 8') !== -1) {
        browser = 'ie8';
    } else if (ua.indexOf('MSIE 9') !== -1) {
        browser = 'ie9';
    } else if (ua.indexOf('MSIE 10') !== -1) {
        browser = 'ie10';
    } else if (ua.indexOf('Trident') !== -1) {
        browser = 'ie11';
    }
    return {
        Os: os,
        SmartPhone: smartPhone,
        Browser: browser
    };
})();
特に明記しない限り、このページのコンテンツは次のライセンスの下にあります: Creative Commons Attribution-ShareAlike 3.0 License