From 816b1be22cda16ce5f651f5269b607e6b60040c3 Mon Sep 17 00:00:00 2001 From: janus_wel Date: Sun, 23 Nov 2008 01:33:02 +0000 Subject: bugfix: compute absolute coordinate add document git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@24681 d0d07461-0603-4401-acd4-de1884942a52 --- mouseinspect.js | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'mouseinspect.js') diff --git a/mouseinspect.js b/mouseinspect.js index c7adcf1..ceb5fc0 100644 --- a/mouseinspect.js +++ b/mouseinspect.js @@ -4,7 +4,7 @@ * @description display informations of the specified element and highlight it by mouse. * @description-ja マウスで指定した要素の情報をコマンドラインに表示&ハイライトする。 * @author janus_wel - * @version 0.10 + * @version 0.11 * @minversion 2.0pre 2008/10/16 * ==/VimperatorPlugin== * @@ -12,11 +12,21 @@ * New BSD License * * USAGE - * :mouseinspect start inspect by mouse + * :mouseinspect * :mins + * -> start inspect by mouse * - * :nomouseinspect stop inspect and clear highlight + * :nomouseinspect * :nomins + * -> stop inspect and clear highlight + * + * SETTING + * blink_element_color: color. default is red. + * blink_element_opacity: opacity value. default is 0.5 . + * + * EXAMPLE + * let blink_element_color='green' + * let blink_element_opacity='0.7' * */ ( function () { @@ -32,16 +42,18 @@ function unhighlight() { d.parentNode.removeChild(d); } } + function highlight(element) { let doc = content.document; let div = doc.createElement('div'); + let [top, left] = getAbsoluteCoodinate(element); div.className = 'vimp_plugin_mouse'; div.style.position = 'absolute'; div.style.display = 'block'; div.style.zIndex = 2147483647; - div.style.top = element.offsetTop + 'px'; - div.style.left = element.offsetLeft + 'px'; + div.style.top = top + 'px'; + div.style.left = left + 'px'; div.style.width = element.offsetWidth + 'px'; div.style.height = element.offsetHeight + 'px'; div.style.backgroundColor = color; @@ -53,6 +65,15 @@ function highlight(element) { doc.body.appendChild(div); } +function getAbsoluteCoodinate(element) { + let top = 0, left = 0; + do { + top += element.offsetTop; + left += element.offsetLeft; + } while (element = element.offsetParent); + return [top, left]; +} + function elementInfo(event) { let element = event.target; if (element.ignore) { -- cgit v1.2.3