Mastodon - Auto CW opener
by
unarist
2018-10-04 [2018/10/04 22:51:19]
CWを自動で開きます。まる。
@@ -5,18 +5,27 @@
* @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 => {
- // open CW
- $(nodes).find('.status__content:has(> :nth-child(3)) .status__content__spoiler-link span').click();
+((target, proc) => (new MutationObserver(m => m.forEach(r => proc(r.addedNodes))).observe(target, { childList: 1, subtree: 1 }), proc([target])))(
+ document.querySelector('.columns-area'),
+ nodes => {
+ // open CW
+ [...nodes]
+ .filter(n => n.nodeType === Node.ELEMENT_NODE)
+ .reduce((p, c) => p.concat([...c.querySelectorAll('.status__content')]), [])
+ .forEach(n => {
+ if (n.children.length === 3) n.querySelector('.status__content__spoiler-link span').click();
+
// open media spoiler
- // $(nodes).find('.media-spoiler').click();
- });
+ // n.querySelector('.media-spoiler').click();
+ });
+ });
+
/* でも前のがES2016活用(?)していておもしろかったので残しとく
/*
* @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 => {
// open CW
[...nodes]
.filter(n => n.nodeType === Node.ELEMENT_NODE)
.reduce((p, c) => p.concat([...c.querySelectorAll('.status__content')]), [])
.forEach(n => {
if (n.children.length === 3) n.querySelector('.status__content__spoiler-link span').click();
// open media spoiler
// n.querySelector('.media-spoiler').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 です。