futaba quick post

shift+enterキーでレス送信

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name           futaba quick post
// @namespace      https://github.com/akoya-tomo
// @description    shift+enterキーでレス送信
// @author         akoya_tomo
// @include        http://*.2chan.net/*/res/*
// @include        https://*.2chan.net/*/res/*
// @require        http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
// @version        1.0.3
// @grant          none
// @license        MIT
// @noframes
// ==/UserScript==
this.$ = this.jQuery = jQuery.noConflict(true);

(function ($) {
	/*
	 *	設定
	 */
	var enterKey = "13";		//Enterキーのキーコード
	var isWindowActive = true;	// タブのアクティブ状態
	var isFormFocus = false;	// フォームのフォーカス状態

	init();

	function init() {
		setWindowFocusEvent();
		setFormFocusEvent();
		setKeydownEvent();
	}

	// タブのアクティブ状態を取得
	function setWindowFocusEvent() {
		$(window).focus();
		$(window).bind("focus", function() {
			// タブアクティブ時
			isWindowActive = true;
		}).bind("blur", function() {
			// タブ非アクティブ時
			isWindowActive = false;
		});
	}

	// フォームのフォーカス状態を取得
	function setFormFocusEvent() {
		$("#ftbl").focusin(function() {
			// フォームフォーカス時
			isFormFocus = true;
		}).focusout(function() {
			// フォーム非フォーカス時
			isFormFocus = false;
		});
	}

	//フォーム返信ショートカットキー
	function setKeydownEvent() {
		window.addEventListener("keydown",function(e) {
			if (e.shiftKey && e.keyCode == enterKey && isWindowActive && isFormFocus) {
				e.preventDefault();
				clickSubmitButton();
			}
		}, false);
	}

	/*
	 * フォームの[返信する]ボタンをクリック
	 */
	function clickSubmitButton() {
		var submitButton = $("#ftbl input[value='返信する'][type='submit']");	//フォームの[返信する]ボタン取得
		if (submitButton.length) {
			submitButton.trigger("click");
		}
	}

})(jQuery);