diff options
author | mattn | 2008-05-27 09:04:37 +0000 |
---|---|---|
committer | mattn | 2008-05-27 09:04:37 +0000 |
commit | 28f13f6cfea2501eae2ba2639a828d5a1e6f65db (patch) | |
tree | ee826b45cacd0b6d30fffba49570544e137b3bef /hatenaStar.js | |
parent | 1c391fe327749d6a7dd6b9ce9d276603e44151eb (diff) | |
download | vimperator-plugins-28f13f6cfea2501eae2ba2639a828d5a1e6f65db.tar.bz2 |
* :hatenaStar ?1 とかでスター予定地をブリンクで確認
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@12534 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'hatenaStar.js')
-rw-r--r-- | hatenaStar.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/hatenaStar.js b/hatenaStar.js index 5852714..8e9c2c5 100644 --- a/hatenaStar.js +++ b/hatenaStar.js @@ -5,10 +5,40 @@ (function(){ +const Cc = Components.classes; +const Ci = Components.interfaces; +var flasher = null; + +function getFlasher(){ + if (!flasher){ + flasher = Cc['@mozilla.org/inspector/flasher;1'].createInstance(Ci.inIFlasher); + flasher.color = '#FF0000'; + flasher.thickness = 2; + } + return flasher; +} + +function blink(aNode){ + if (aNode.nodeType == 3) aNode = aNode.parentNode; + var toggle = true; + var flasher = getFlasher(); + for (var i=1; i<7; ++i){ + setTimeout(function() { + if (toggle) flasher.drawElementOutline(aNode); + else flasher.repaintElement(aNode); + toggle = !toggle; + }, i * 100); + } +} + liberator.commands.addUserCommand(['hatenastar', 'hatenas'], 'add Hatena Star', function (arg, special) { try { var result = liberator.buffer.evaluateXPath('.//img[contains(concat(" ", @class, " "), " hatena-star-add-button ")]'); + if (arg.match(/^\?(\d+)$/)) { + blink(result.snapshotItem(RegExp.$1)); + return; + } for (var i = 0, l = result.snapshotLength; i < l; i++) { if (arg == '' || arg == 'all' || arg == (i+1)) { var s = result.snapshotItem(i); |