teratail 修正依頼を定型文で送る Fork

  • /*
     * @title teratail 修正依頼を定型文で送る
     * @description https://teratail.com/questions/233570 からインスパイア。
     * @include https://teratail.com/*
     * @license public domain
     * @javascript_url
     */
    
    
    void (async()=>{
      const $id = document.getElementById.bind(document);
      const $qs = ( s, c = document ) => {
        const r = Array.from( c.querySelectorAll(s) );
        return r.length ? r : [document.createDocumentFragment()];
      };
    
      const url = "https://teratail.com/help/question-tips";
      const helpTagName = '.P-navigation';
      const wrapperTagName = 'g5G38emWp5UZ';
    
      if ( $id( wrapperTagName ) ){
        $id( wrapperTagName ).style.display = 'block';
      } else {
        const helpHTML = ( new DOMParser() ).parseFromString( 
          await(await fetch(url)).text(), 
          'text/html'
        );
    
        const div = document.createElement('div');
        div.id = wrapperTagName;
    
        const helpDOM = $qs( helpTagName, helpHTML )[0];
        helpDOM.style.position = 'fixed';
        helpDOM.style.top = '0';
        helpDOM.style.width = '50vw';
        helpDOM.style.height = '100vh';
        helpDOM.style.background = 'rgba(255,255,255,0.5)';
        helpDOM.style.zIndex = '99';
        div.appendChild(helpDOM);
    
        const backDiv = document.createElement('div');
        backDiv.style.position = 'fixed';
        backDiv.style.top = '0';
        backDiv.style.width = '100vw';
        backDiv.style.height = '100vh';
        backDiv.style.zIndex = '98';
        div.appendChild(backDiv);
    
        document.body.appendChild(div);
    
        helpDOM.addEventListener('click',e=>{
          $qs('#RequestRewriteInfoForm')[0].value += e.target.textContent + "\n" + url + e.target.getAttribute('href') + '\n\n';
        });
    
        backDiv.addEventListener('click',e=>{
          div.style.display = 'none';
        });
      } 
      
    })()
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。