Enno.jp でアクティヴなテキストエリアをチェック
by
lieutar
2016-08-08 [2016/08/08 12:39:12]
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 です。