Mastodon - Auto CW opener Fork

    @@ -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 です。