aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjanus_wel2008-11-22 18:07:03 +0000
committerjanus_wel2008-11-22 18:07:03 +0000
commit76dfadab54e18fa861dd59be071b193f7d6cf67b (patch)
tree3b93d7fee367592f33514134a445e7ae5ba34285
parent864df11e271f2d713f2d7d6bf5a05084a6bf1891 (diff)
downloadvimperator-plugins-76dfadab54e18fa861dd59be071b193f7d6cf67b.tar.bz2
import
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@24668 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r--mouseinspect.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/mouseinspect.js b/mouseinspect.js
new file mode 100644
index 0000000..c7adcf1
--- /dev/null
+++ b/mouseinspect.js
@@ -0,0 +1,84 @@
+/*
+ * ==VimperatorPlugin==
+ * @name mouseinspect.js
+ * @description display informations of the specified element and highlight it by mouse.
+ * @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
+ * :mouseinspect start inspect by mouse
+ * :mins
+ *
+ * :nomouseinspect stop inspect and clear highlight
+ * :nomins
+ * */
+
+( function () {
+
+const color = liberator.globalVariables.mouse_inspect_color || 'red';
+const opacity = liberator.globalVariables.mouse_inspect_opacity || 0.5;
+let divList = [];
+
+function unhighlight() {
+ let divs = buffer.evaluateXPath('//div[contains(concat(" ", @class, " "), " vimp_plugin_mouse ")]');
+ while (divList.length) {
+ let d = divList.pop();
+ d.parentNode.removeChild(d);
+ }
+}
+function highlight(element) {
+ let doc = content.document;
+ let div = doc.createElement('div');
+ div.className = 'vimp_plugin_mouse';
+
+ div.style.position = 'absolute';
+ div.style.display = 'block';
+ div.style.zIndex = 2147483647;
+ div.style.top = element.offsetTop + 'px';
+ div.style.left = element.offsetLeft + 'px';
+ div.style.width = element.offsetWidth + 'px';
+ div.style.height = element.offsetHeight + 'px';
+ div.style.backgroundColor = color;
+ div.style.opacity = opacity;
+ div.style.MozOpacity = opacity;
+ div.ignore = true;
+
+ divList.push(div);
+ doc.body.appendChild(div);
+}
+
+function elementInfo(event) {
+ let element = event.target;
+ if (element.ignore) {
+ unhighlight();
+ return;
+ }
+
+ let attributes = [a.name + '="' + a.value + '"' for (a in util.Array.iterator(element.attributes))].join(' ');
+ let str = '<' + element.localName.toLowerCase() + (attributes ? ' ' + attributes : '') + '>';
+ highlight(element);
+ liberator.echo(str, commandline.FORCE_SINGLELINE);
+}
+
+commands.addUserCommand(
+ ['mouseinspect', 'mins'],
+ 'mouse',
+ function () { window.addEventListener('mousemove', elementInfo, false); },
+ {}
+);
+commands.addUserCommand(
+ ['nomouseinspect', 'nomins'],
+ 'mouse',
+ function () {
+ window.removeEventListener('mousemove', elementInfo, false);
+ unhighlight();
+ },
+ {}
+);
+} )()