A!

    
      
  • /*
     * @title A!
     * @description Hatena Antenna manual force checker
     * @include *
     * @license MIT License https://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    // Hatena Antenna system malfunction c.f.
    //  http://h.hatena.ne.jp/noromanba/81804280707167117
    //  http://h.hatena.ne.jp/noromanba/316272955840853531
    //
    //  http://hatena.g.hatena.ne.jp/hatenaantenna/20171225/1514168462
    //  http://hatena.g.hatena.ne.jp/hatenaantenna/20171226/1514280285
    //  https://twitter.com/hatenamaint/status/945585471702179840
    
    // TODO bulk check on antenna list
    //  http://a.hatena.ne.jp/<HATENA_ID>/checklist
    // NOTE must be register before checking
    (() => {
        'use strict';
    
        // https://gist.github.com/noromanba/d730ccf3ae5e6916cd60
        const canonical = (document.querySelector([
                'head meta[property="og:url"][content]'
            ]) || {}).content ||
            (document.querySelector([
                'head link[rel="canonical"][href]'
            ]) || {}).href ||
            location.href;
    
    
        // manual checker syntax;
        //      http://a.hatena.ne.jp/check?url=<ENCODED_URL>[&robots=1]
        // min interval: 5min c.f.
        //  http://a.hatena.ne.jp/check?url=
        const checker = new URL('http://a.hatena.ne.jp/check');
        checker.searchParams.set('url', canonical);
        checker.searchParams.set('robots', 1);
    
        /*/
        // silent exec
        // XXX can't over CSP, Mixed Content and Extensions blocking
        //Object.assign(document.createElement('img'), {
        //    src: checker.href,
        //});
    
        // FIXME silent alternative, but don't work c.f.
        //  http://let.hatelabo.jp/noromanba/let/hLHXvenproxG
        //document.body.appendChild(Object.assign(document.createElement('iframe'), {
        //    src: checker.href,
        //    sandbox: [
        //        'allow-scripts',
        //        'allow-forms',
        //        'allow-same-origin',
        //    ].join(' '),
        //}));
        /*/
        // blocking workaround
        const result = window.open(checker.href, '_blank');
        //result.close();
        //*/
    })();
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2017/12/27 03:55:45 - 2017-12-27