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 --- blinkelement.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'blinkelement.js') diff --git a/blinkelement.js b/blinkelement.js index b7b7e1a..4993f84 100644 --- a/blinkelement.js +++ b/blinkelement.js @@ -4,7 +4,7 @@ * @description blink specified elements. * @description-ja 指定した要素を点滅させる。 * @author janus_wel - * @version 0.20 + * @version 0.21 * @minversion 2.0pre 2008/10/16 * ==/VimperatorPlugin== * @@ -21,11 +21,9 @@ * -> clear blink all elements. * * SETTING - * blink_element_interval: interval time. default is 800 msec. - * blink_element_color: color for blink. default is red. - * blink_element_sparecolor: use this value when target's background color - * is same as color specified blink_element_color - * or default. default is cyan. + * blink_element_interval: interval time. default is 800 msec. + * blink_element_color: color for blink. default is red. + * blink_element_opacity: opacity value. defualt is 0.5 . * * EXAMPLE * let blink_element_interval='500' @@ -45,14 +43,15 @@ const opacity = liberator.globalVariables.blink_element_opacity || 0.5; function setBlink(element) { let doc = content.document; + let [top, left] = getAbsoluteCoodinate(element); let div = doc.createElement('div'); div.className = 'vimp_plugin_blinkelement'; 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; @@ -70,6 +69,15 @@ function setBlink(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 clearBlink(element) { if (element.intervalId) clearInterval(element.intervalId); element.parentNode.removeChild(element); -- cgit v1.2.3