aboutsummaryrefslogtreecommitdiffstats
path: root/hatenaStar.js
diff options
context:
space:
mode:
Diffstat (limited to 'hatenaStar.js')
-rw-r--r--hatenaStar.js30
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);