Enno.jp でアクティヴなテキストエリアをチェック

  • /*
     * @title Enno.jp でアクティヴなテキストエリアをチェック
     * @description Enno.jp でアクティヴなテキストエリアをチェック
     * @include http://*
     * @license MIT License
     * @require 
     */
    
    (function(){
    
      var win = this,
          doc = this.document;
    
      var ENNO_CHECKER = 'http://enno.jp/check';
      var MES_EMPTY = [
        'テキストが選択されていません。送信を行わずに終了します。',
        '',
        'ヒント: ブラウザでCtrl-A (Macなら⌘-A) キーを押すと全文選択できます。'
      ].join("\n");
      var MES_SEND = [
        '選択したテキストはインターネット上のenno.jpに送信してもよいテキストですか?',
        '',
        '[キャンセル]をクリックすれば送信せずに終了します。',
        '',
        '[OK]をクリックすると、選択したテキストを3秒後にenno.jpに送信し、'+
          'チェック結果の表示ページに移動します。'
      ].join("\n");
    
    
      var getSelectedText = function() {
        var ae = doc.activeElement;
        if(ae){
          switch(String(ae.tagName).toLowerCase()){
          case 'textarea':
          case 'input':   { return ae.value; }
          default: {}}}
        return win.getSelection().toString();};
    
      var postToEnno = function(sel){
        var form = doc.createElement('form');
        var textarea = doc.createElement('textarea');
        form.style.display = 'none';
        form.appendChild(textarea);
        form.action        = ENNO_CHECKER;
        form.method        = 'POST';
        form.enctype       = 'application/x-www-form-urlencoded';
        form.acceptCharset = 'utf-8';
        form.name          = "form_typo";
        form.target        = '_blank';
        textarea.name      = 'typotext';
        textarea.appendChild(doc.createTextNode(sel));
        doc.body.appendChild(form);
        form.submit();
        win.setTimeout(function(){doc.body.removeChild(textarea);},100);};
    
      var sel = getSelectedText();
      if (sel === ''){
        win.alert(MES_EMPTY);
      } else {
        if (!win.confirm (MES_SEND)) return;
        win.setTimeout(function() {postToEnno(sel);}, 3000 - Date.now());
      }
    }).call(null);
    
    // Local Variables:
    // mode: hatena-let
    // coding: utf-8-dos
    // End:
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2016/08/08 12:39:12 - 2016-08-08