Changeset 24664

Show
Ignore:
Timestamp:
11/23/08 01:53:41 (7 weeks ago)
Author:
janus_wel
Message:

change method for blink.
append 'div' element that have style 'position=absolute;'

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/vimperator-plugins/trunk/blinkelement.js

    r24594 r24664  
    55 * @description-ja  指定した要素を点滅させる。 
    66 * @author          janus_wel <janus_wel@fb3.so-net.ne.jp> 
    7  * @version         0.11 
     7 * @version         0.20 
    88 * @minversion      2.0pre 2008/10/16 
    99 * ==/VimperatorPlugin== 
     
    3131 *  let blink_element_interval='500' 
    3232 *  let blink_element_color='green' 
    33  *  let blink_element_sparecolor='purple' 
     33 *  let blink_element_opacity='0.7' 
    3434 * 
    3535 *  :bl content.document.getElementsByTagName('A'); 
     
    4040( function () { 
    4141 
    42 let intervalList = []; 
    4342const interval = liberator.globalVariables.blink_element_interval || 800; 
    4443const color = liberator.globalVariables.blink_element_color || 'red'; 
    45 const spareColor = liberator.globalVariables.blink_element_sparecolor || 'cyan'; 
     44const opacity = liberator.globalVariables.blink_element_opacity || 0.5; 
     45const doc = content.document; 
    4646 
    4747function setBlink(element) { 
    48     let originalColor = element.style.backgroundColor || 'inherit'; 
    49     let blinkColor = (originalColor == color) ? spareColor : color; 
     48    let div = doc.createElement('div'); 
     49    div.className = 'vimp_plugin_blinkelement'; 
    5050 
    51     element.style.backgroundColor = blinkColor; 
    52     let state = false; 
    53     let intervalId = setInterval( function () { 
    54         element.style.backgroundColor = state ? blinkColor : originalColor; 
    55         state = !state; 
    56     }, interval); 
     51    div.style.position = 'absolute'; 
     52    div.style.display = 'block'; 
     53    div.style.zIndex = 2147483647; 
     54    div.style.top    = element.offsetTop + 'px'; 
     55    div.style.left   = element.offsetLeft + 'px'; 
     56    div.style.width  = element.offsetWidth + 'px'; 
     57    div.style.height = element.offsetHeight + 'px'; 
     58    div.style.backgroundColor = color; 
     59    div.style.opacity    = opacity; 
     60    div.style.MozOpacity = opacity; 
    5761 
    58     intervalList.push({ 
    59         id:         intervalId, 
    60         element:    element, 
    61         color:      originalColor, 
    62     }); 
     62    div.intervalId = setInterval( 
     63        function () { 
     64            let d = div.style.display; 
     65            div.style.display = (d === 'block' ? 'none' : 'block'); 
     66        }, 
     67        interval 
     68    ); 
     69 
     70    doc.body.appendChild(div); 
    6371} 
    6472 
    65 function clearBlink(i) { 
    66     i.element.style.backgroundColor = i.color; 
    67     clearInterval(i.id); 
     73function clearBlink(element) { 
     74    if (element.intervalId) clearInterval(element.intervalId); 
     75    element.parentNode.removeChild(element); 
    6876} 
    6977 
     
    109117    'no blink', 
    110118    function () { 
    111         while (intervalList.length) clearBlink(intervalList.pop()); 
     119        let divs = buffer.evaluateXPath('//div[contains(concat(" ", @class, " "), " vimp_plugin_blinkelement ")]'); 
     120        for (let d in divs) clearBlink(d); 
    112121    }, 
    113122    {}