プログラマメモ

gm_Link_Invalidity

最終更新:

inouework

- view
管理者のみ編集可

Link_Invalidity

  • ダウンロードは一番下の添付より行ってください
// ==UserScript==
// @name           Link_Invalidity
// @namespace      Link_Invalidity
// @include        *
// ==/UserScript==
var maHref = new Array();
var mbSwitch = false;

function a_href_chenge(){
	if( mbSwitch == false){
		a_href_off();
		mbSwitch = true;
	}else{
		a_href_on();
		mbSwitch = false;
	}
}

/**
 * リンクエレメント無効
 * 全リンクのナビゲーション値を保存
 * リンクタグ(「A」)のオブジェクトを全取得し
 * ナビゲーション属性(「href」)を削除する
 */
function a_href_off(){
	// リンクパスを保存
	gethref();
	var aobj = document.getElementsByTagName( 'A');
	for( i = 0; aobj.length > i; i++){
		aobj[i].removeAttribute( 'href');
	}
	//document.forms[0].elements[0].disabled = true;
	//document.forms[0].elements[1].disabled = false;
}

/**
 * リンクエレメント有効
 * リンクタグ(「A」)のオブジェクトを全取得し
 * ナビゲーション属性(「href」)を設定する
 * 値は保存しておいた値を使用する
 */
function a_href_on(){
	var aobj = document.getElementsByTagName( 'A');
	for( i = 0; aobj.length > i; i++){
		aobj[i].setAttribute( 'href', maHref[i]);
	}
	//document.forms[0].elements[0].disabled = false;
	//document.forms[0].elements[1].disabled = true;
}

/**
 * 全リンクエレメントのナビゲーション値を一時保存
 * リンクタグ(「A」)のオブジェクトを全取得し
 * ナビゲーション属性(「href」)の値を配列に設定する
 */
function gethref(){
	if( maHref.length <= 0){
		var aobj = document.getElementsByTagName( 'A');
		for( i = 0; aobj.length > i; i++){
			maHref[i] = aobj[i].getAttribute( 'href');
		}
	}
}

/**	
 * documentに対するkeydownイベントの処理設定をする。
 * 第1引数でキーを指定し、
 * 第2引数で指定されたキーが押し下げられたときに実行する関数を指定する。
 * ただし、INPUT要素、TEXTAREA要素に対するキーイベントの場合は何もしない。
 */
var keybind = ( function(){
	function add ( phrase, func){
		if( phrase instanceof Array){
			phrase.forEach( function( p){
				add( p, func);
			});
		} else {
			document.addEventListener( "keydown", function( event){
				var tagName = event.target.tagName;
				if( phrase == code( event) && !tagName.match(/(INPUT|TEXTAREA)/i)){
					func();
					event.preventDefault();
					event.stopPropagation();
				}
			}, true);
		}
	}
	function code( event){
		var code = [];
		if( event.shiftKey){
			code.push("SHIFT");
		} 
		if( event.ctrlKey){
			code.push("CTRL");
		} 
		if( event.altKey || event.metaKey){
			code.push("ALT");
		}
		var vkey = kc2char( event.keyCode);
		if( vkey != ""){
			code.push( kc2char( event.keyCode));
		}

		GM_log( code.join( "-"));

		return code.join( "-");

		function kc2char( kc){
			function between( a, b){
				return a <= kc && kc <= b;
			}
			var _32_40 = "space pageup pagedown end home left up right down".split(" ");
			var kt = {
			     8 : "backspace",
			     9 : "tab"  ,
			    13 : "enter",
			    16 : "",
			    17 : "",
			    27 : "escape",
			    46 : "delete",
			    59 : ":",
			   107 : ";",
			   109 : "-",
			   188 : ",",
			   190 : ".",
			   191 : "/",
			   192 : "@",
			   219 : "[",
			   220 : "\\",
			   221 : "]",
			   222 : "^",
			   226 : "\\",
			};

				//16 : "shift",
				//17 : "control",

			return ( between( 65, 90)  ? String.fromCharCode( kc + 32) :	// a-z
				between( 48, 57)  ? String.fromCharCode( kc) :				// 0-9
				between( 96, 105) ? String.fromCharCode( kc - 48) :			// num 0-9
				between( 32, 40)  ? _32_40[kc-32] :
				kt.hasOwnProperty( kc) ? kt[kc] : 
				kc);
		}
	}
	return add;
})();


keybind( "SHIFT-CTRL", a_href_chenge); 
添付ファイル
記事メニュー
目安箱バナー