Mastodon - Auto CW opener
by
unarist
2018-10-04 [2018/10/04 22:51:19]
CWを自動で開きます。まる。
@@ -23,7 +23,7 @@
n.querySelector('.status__content__spoiler-link span').click();
// open media spoiler
- // n.querySelector('.media-spoiler').click();
+ // (n.closest('.status').querySelector('.media-spoiler')||{click(){}}).click();
});
});
/*
* @title Mastodon - Auto CW opener
* @description CWを自動で開きます。まる。
* @license MIT License
* @javascript_url
*/
// jQuery依存がなくなるようなのでjQueryなしで書き直し。
/*
.status-listをtargetとして複数降ってくることが多いので、targetをそのまま反復するのは無駄が多い。
addedNodesを見る or mutationRecordsは無視して監視対象のコンテナからquerySelector、するのがよさそう。
*/
((target, proc) => (new MutationObserver(m => m.forEach(r => proc(r.addedNodes))).observe(target, { childList: 1, subtree: 1 }), proc([target])))(
document.querySelector('.columns-area'),
nodes => {
Array.from(nodes)
.filter(n => n.nodeType === Node.ELEMENT_NODE)
.reduce((p, c) => p.concat(Array.from(c.querySelectorAll('.status__content'))), [])
.forEach(n => {
// open CW
if (n.lastElementChild.matches('.status__content__text:not(.status__content__text--visible'))
n.querySelector('.status__content__spoiler-link span').click();
// open media spoiler
// (n.closest('.status').querySelector('.media-spoiler')||{click(){}}).click();
});
});
/* でも前のがES2016活用(?)していておもしろかったので残しとく
((target, proc) => (new MutationObserver(m=>m.forEach(proc)).observe(target, {childList:1, subtree:1}), proc({target})))(
document.querySelector('.columns-area'),
({target}) => {
// open CW
$(target).find('.status__content:has(> :nth-child(3)) .status__content__spoiler-link span').click();
// open media spoiler
// $(target).find('.media-spoiler').click();
});
*/
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。