os0x / ChromeKeyconfig (http://ss-o.net/chrome_extension/)

Keyconfig Extension for Google Chrome

Clone this repository (size: 187.5 KB): HTTPS / SSH
$ hg clone http://bitbucket.org/os0x/chromekeyconfig/
commit 113: d34d91b9df98
parent 112: 29f846979858
branch: default
hit-a-hint:getClientRects()[0]だけで判定するように hit-a-hint:子要素が画像のみ時は画像のRectを使うように
os0x
5 weeks ago

Changed (Δ107 bytes):

raw changeset »

chrome_keyconfig.js (15 lines added, 14 lines removed)

Up to file-list chrome_keyconfig.js:

@@ -573,9 +573,8 @@ var ACTION = {
573
573
			return n;
574
574
		};
575
575
		function getAbsolutePosition(elem) {
576
			var rects;
577
			if ((rects=is_viewable(elem))){
578
				var rect = rects[0];
576
			var rect;
577
			if ((rect=is_viewable(elem))){
579
578
				return {
580
579
					y: window.pageYOffset - Root.clientTop + rect.top,
581
580
					x: window.pageXOffset - Root.clientLeft + rect.left
@@ -584,18 +583,20 @@ var ACTION = {
584
583
			return false;
585
584
		};
586
585
		function is_viewable(elem) {
587
			var rects = elem.getClientRects();
588
			var i = 0, e;
589
			while (r = rects[i++]) {
590
				e = document.elementFromPoint(r.left, r.top);
591
				if (e && e === elem) return rects;
592
				e = document.elementFromPoint(r.left, r.bottom - 1);
593
				if (e && e === elem) return rects;
594
				e = document.elementFromPoint(r.right - 1, r.top);
595
				if (e && e === elem) return rects;
596
				e = document.elementFromPoint(r.right - 1, r.bottom - 1);
597
				if (e && e === elem) return rects;
586
			if (elem.childElementCount === 1 && elem.firstElementChild instanceof HTMLImageElement){
587
				elem = elem.firstElementChild;
598
588
			}
589
			var rect = elem.getClientRects()[0];
590
			if (!rect) return false;
591
			var e;
592
			e = document.elementFromPoint(rect.left, rect.top);
593
			if (e && e === elem) return rect;
594
			e = document.elementFromPoint(rect.left, rect.bottom - 1);
595
			if (e && e === elem) return rect;
596
			e = document.elementFromPoint(rect.right - 1, rect.top);
597
			if (e && e === elem) return rect;
598
			e = document.elementFromPoint(rect.right - 1, rect.bottom - 1);
599
			if (e && e === elem) return rect;
599
600
			return false;
600
601
		}
601
602
		var hints = [];