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を使うように
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 |
|
|
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 |
|
|
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 = []; |
