- D&Dは画像だけにする?-> 上下入れ替え
- h1をh2,h3に変更-> nodeTagの変更関数
- -> スクロール禁止にする・しない
- フォーカスした時の青線-> 要素にoutline: none; で消える
//ノード名で判定
x = document.getElementById('ts1').nodeName
['H1','H2','H3','H4','H5'].includes(x);
//文字列で判定 -> string(先頭・後方の空白除去、先頭から3文字)
x = textarea.value.trim().slice(0,3);
//includesは大文字小文字を区別する
['<H1','<H2','<H3','<H4','<H5','<h1','<h2','<h3','<h4','<h5'].includes(x);
//
let $add = (op.mode == 'block')?el$(op.addbtn):'';
let $box = fn$.box({box:op.box,add:$add})(el);
//単体モード or ブロックモードで追加ボタンの有無
if($add) $box.footer.appendChild($box.add);
//IDをボックスメインに付与:必要??
let $id = fn$.setid('cry')($box.main);
//中身を判定 ノード||テキストノード||空 -> 空の場合は 'textbox'
// let $inner = $box.main.firstElementChild||$box.main.firstChild||$box.main.innerHTML;
const $inner = $box.main.childNodes;
//タイプをノードから判定する場合
if(!op.type) {
op.type = ($inner.length == 0)?'textbox':editor$.checkNode($inner.item(0));
}
//タイプに該当するclass
const $class = editor$.class[editor$.type.indexOf(op.type)];
//編集ボックスにタイプに応じた権限を与える
//バーをセット(パーはページで一位)
const $bar = document.getElementById(op.id_bar)||el$({id:op.id_bar});
$box.header.appendChild($bar);
//バーに個別バー&ボタンをセット
const $editbar = document.getElementById(op.prefix + op.type + '-id')||el$({id:op.prefix + op.type + '-id',class:op.class_inner_bar + ' ' + $class },list$(editor$.btn[op.type],'',editor$.btn.tpl));
$bar.appendChild($editbar);
console.log(op.type);
//タイプ別に編集モードにする
//contentEditableモードにする
if(['blockquote','textbox'].includes(op.type)) $box.main.firstElementChild.setAttribute('contentEditable','true');
if(op.type == 'headline') $box.main.firstElementChild.firstElementChild.setAttribute('contentEditable','true');
//ボタンに関数をセットする関数
editor$.fun.set = function(type){
return function(el) {
return editor$.fun[type](editor$.fnop[type])(el);
}
};
//エレメント生成配列で、関数をセットする
/* 見出し用 */
editor$.btn.headline = [
{ name:"デザイン", icon:"nja-logo-design", fun: editor$.fun.set('headline'),},
];
//タイプ別に編集モードにする
//contentEditableモードにする
if(['blockquote','textbox'].includes(op.type)) $box.main.firstElementChild.setAttribute('contentEditable','true');
if(op.type == 'headline') $box.main.firstElementChild.firstElementChild.setAttribute('contentEditable','true');
//クリックしたときに
$box.main.addEventListener('click',function(){
//1回だけ動作(ターゲットIDとブロック要素のIDが一致しない場合のみ動作)
if($bar.getAttribute('data-target') != $id) {
//編集バーを移動
$box.header.appendChild($bar);
//個別バーをアクティブ - タイプクラスをつけてCSSで表示・非表示
fn$.inClass(editor$.class,'remove')($bar);
$bar.classList.add($class);
//ターゲットの指定を変える
$bar.setAttribute('data-target',$id);
}
},false);
この文章はダミーです。夏は夜。月の頃はさらなり、闇もなほ、蛍のおほく飛びちがひたる。また、ただ一つ二つなど、ほのかにうち光りて行くも、をかし。雨など降るも、をかし。この文章はダミーです。秋は夕暮れ。夕日のさして、山の端いと近くなりたるに、烏の、寝所へ行くとて、三つ四つ、二つ三つなど、飛び急ぐさへ、あはれなり。まいて、雁などのつらねたるが、いと小さく見ゆるは、いとをかし。日入りはてて、風の音、虫の音など、はた、言ふべきにあらず。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。レイアウトを確認するための文章ですので意味はありません。
この文章はダミーです。夏は夜。月の頃はさらなり、闇もなほ、蛍のおほく飛びちがひたる。また、ただ一つ二つなど、ほのかにうち光りて行くも、をかし。雨など降るも、をかし。この文章はダミーです。秋は夕暮れ。夕日のさして、山の端いと近くなりたるに、烏の、寝所へ行くとて、三つ四つ、二つ三つなど、飛び急ぐさへ、あはれなり。まいて、雁などのつらねたるが、いと小さく見ゆるは、いとをかし。日入りはてて、風の音、虫の音など、はた、言ふべきにあらず。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。レイアウトを確認するための文章ですので意味はありません。
この文章はダミーです。夏は夜。月の頃はさらなり、闇もなほ、蛍のおほく飛びちがひたる。また、ただ一つ二つなど、ほのかにうち光りて行くも、をかし。雨など降るも、をかし。この文章はダミーです。秋は夕暮れ。夕日のさして、山の端いと近くなりたるに、烏の、寝所へ行くとて、三つ四つ、二つ三つなど、飛び急ぐさへ、あはれなり。まいて、雁などのつらねたるが、いと小さく見ゆるは、いとをかし。日入りはてて、風の音、虫の音など、はた、言ふべきにあらず。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。レイアウトを確認するための文章ですので意味はありません。
//.childNodesは、空の場合もNodelistを返す。length = 0;
<div class="box-nj col-12" data-type="bubble">
<div class="cmtbox rcm">
<div class="cmt-icon" data-face="img-16262537746322">
<div class="face-icon face_shock">
<span class="face_emotion"></span>
<div class="face-o w64">
<img src="http://test.example.com/photo/202107/12113548/1626068223067-1.png">
<span class="facetag">ジー</span>
</div>
</div>
</div>
<div class="cmt cmt-r p-2 once-anime" data-aniclass="once-anime">今日の晩飯はなんじゃのーーー?</div>
</div>
</div>