WorkFlowyからScrapboxにコピペするときになんとかしたいブックマークレット
code:script.js
var selectedText = window.getSelection().toString();
var level = 0
var textbody = [];
var f = [];
var e = document.querySelectorAll('div.addedToSelection');
for (let i = 0;i < e.length; i++){
f.push(ei.querySelectorAll('div.project div.name, div.children'))
}
searchName(f0);
alert(f011.innerText)
function searchName(node){
for (let i = 0;i < node.length; i++){
if (nodei.classList.contains('name') == true){
textbody.push(String(level) + nodei.innerText);
}else if (nodei.classList.contains('children') == true){
level++;
searchName(nodei);
}
}
level--;
}
いったん仕切り直し
for (i = 0;i < f.length;i++){
if (fi.matches('div.name')){
alert(fi.innerText)
}
}
解析
0 name _1n6wdmk
1 children _15ttbmm
2 name _1n6wdmk
3 children _15ttbmm
4 name _1n6wdmk
(ここで階層を上がっている?
5 name _1n6wdmk
6 children _15ttbmm
7 name _1n6wdmk
alert(f[1].childNodes[0].childNodes[0].innerText);
これで潜っていけばいい。
childrenにぶつかるたびにノードを潜る→テキストのインデントを深くする
単行はwindow.getSelection().toString()で取得できるが、複数行では無理。
https://gyazo.com/ea3006969c2643d0d9f9cf703a684dc0
ref. /thinkandcreateteck/WorkFlowyのトピックをScrapboxに転記するBookmarklet
addedToSelection というdivの中身を取得すればいいのでは?
spanにテキストは入っている
階層を無視すればとりあえずこれでいける。
nameとchlidrenで再帰処理すれば階層も取れる。
`https://scrapbox.io/rashitamemo/
javascript:(function(d,s){s=d.createElement('script');s.src='https://scrapbox.io/api/code/rashitamemo/WorkFlowy%E3%81%8B%E3%82%89Scrapbox%E3%81%AB%E3%82%B3%E3%83%94%E3%83%9A%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E3%81%AA%E3%82%93%E3%81%A8%E3%81%8B%E3%81%97%E3%81%9F%E3%81%84%E3%83%96%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%AC%E3%83%83%E3%83%88/script.js';d.body.appendChild(s);})(document)
ref:
Document.querySelector() - Web API | MDN
Node.textContent - Web API | MDN
JavaScriptでクリップボードに文字をコピーする(ブラウザ) - Qiita
window.getSelection - Web API | MDN