diff options
author | janus_wel | 2008-11-21 12:32:24 +0000 |
---|---|---|
committer | janus_wel | 2008-11-21 12:32:24 +0000 |
commit | 3fef7cbb068ec09a97c8067919da0df514a76487 (patch) | |
tree | 4f5f45cb0ad580199574848d648a2f987fcf53c6 | |
parent | 8a27050b7e0ed29371e01f04b655151dc0bf4953 (diff) | |
download | vimperator-plugins-3fef7cbb068ec09a97c8067919da0df514a76487.tar.bz2 |
import
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@24576 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r-- | blinkelement.js | 116 | ||||
-rw-r--r-- | hidecritter.js | 57 |
2 files changed, 173 insertions, 0 deletions
diff --git a/blinkelement.js b/blinkelement.js new file mode 100644 index 0000000..5d2c700 --- /dev/null +++ b/blinkelement.js @@ -0,0 +1,116 @@ +/* + * ==VimperatorPlugin== + * @name nicontroller.js + * @description blink specified elements. + * @description-ja 指定した要素を点滅させる。 + * @author janus_wel <janus_wel@fb3.so-net.ne.jp> + * @version 0.10 + * @minversion 2.0pre 2008/10/16 + * ==/VimperatorPlugin== + * + * LICENSE + * New BSD License + * + * USAGE + * :blink {element[s] object} + * :bl + * -> blink specified element[s]. + * + * :noblink + * :nobl + * -> 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. + * + * EXAMPLE + * let blink_element_interval='500' + * let blink_element_color='green' + * let blink_element_sparecolor='purple' + * + * :bl content.document.getElementsByTagName('A'); + * :nobl + * */ + +( function () { + +let intervalList = []; +const interval = liberator.globalVariables.blink_element_interval || 800; +const color = liberator.globalVariables.blink_element_color || 'red'; +const spareColor = liberator.globalVariables.blink_element_sparecolor || 'cyan'; + +function setBlink(element) { + let originalColor = element.style.backgroundColor || 'inherit'; + let blinkColor = (originalColor == color) ? spareColor : color; + + element.style.backgroundColor = blinkColor; + let state = false; + let intervalId = setInterval( function () { + element.style.backgroundColor = state ? blinkColor : originalColor; + state = !state; + }, interval); + + intervalList.push({ + id: intervalId, + element: element, + color: originalColor, + }); +} + +function clearBlink(i) { + i.element.style.backgroundColor = i.color; + clearInterval(i.id); +} + +commands.addUserCommand( + ['blink', 'bl'], + 'blink', + function (args) { + let arg = args.string; + let element; + try { + element = eval(arg); + } + catch (e) { + liberator.log(e); + liberator.echoerr(e); + } + + if (!element) { + liberator.echoerr('specify element[s]'); + return; + } + + if (element instanceof HTMLCollection) { + for (let [, e] in Iterator(element)) { + setBlink(e); + } + } + else if ('style' in element) { + setBlink(element); + } + else { + liberator.echoerr('specify element[s]'); + } + }, + { + completer: function (filter) completion.javascript(filter), + } +); + +commands.addUserCommand( + ['noblink', 'nobl'], + 'no blink', + function () { + while (intervalList.length) clearBlink(intervalList.pop()); + }, + {} +); + +})() + +// vim: set sw=4 ts=4 et; diff --git a/hidecritter.js b/hidecritter.js new file mode 100644 index 0000000..7c48ff0 --- /dev/null +++ b/hidecritter.js @@ -0,0 +1,57 @@ +/* + * ==VimperatorPlugin== + * @name nicontroller.js + * @description hide specified elements. + * @description-ja 指定した要素を隠す。 + * @author janus_wel <janus_wel@fb3.so-net.ne.jp> + * @version 0.10 + * @minversion 2.0pre 2008/10/16 + * ==/VimperatorPlugin== + * + * LICENSE + * New BSD License + * + * USAGE + * hit ';h' + * + * TODO + * use wedate.net... ? + * */ + +( function () { +const localSITEINFO = [ + { + name: 'はてなダイアリー', + url: 'http://d.hatena.ne.jp/', + xpath: '( id("simple-header") | //div[contains(concat(" ", @class, " "), " header ")] | //div[contains(concat(" ", @class, " "), " sidebar ")])', + } +]; + +const defaultSITEINFO = { + name: 'default', + url: '.*', + xpath: '( //*[contains(@id, "header")] | //*[contains(@id, "footer")] | //*[contains(@id, "sidebar")] | //*[contains(@class, "header")] | //*[contains(@class, "footer")] | //*[contains(@class, "sidebar")] )', +}; + +hints.addMode( + 'h', + 'hide look like header, footer, sidebar and so on', + function (element) { + element.style.display = 'none'; + }, + function () { + let siteinfo; + for (let [, s] in Iterator(localSITEINFO)) { + if (buffer.URL.match(s.url)) { + siteinfo = s; + break; + } + } + if (!siteinfo) siteinfo = defaultSITEINFO; + + return siteinfo.xpath; + } +); +} )(); + +// vim: set sw=4 ts=4 et; |