aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormattn2008-05-27 09:04:37 +0000
committermattn2008-05-27 09:04:37 +0000
commit28f13f6cfea2501eae2ba2639a828d5a1e6f65db (patch)
treeee826b45cacd0b6d30fffba49570544e137b3bef
parent1c391fe327749d6a7dd6b9ce9d276603e44151eb (diff)
downloadvimperator-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
-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);