diff options
-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); |