在 《GreaseMonkey 這玩意》中提到滑鼠事件要改寫成:

window.addEventListener(’mouseevent’,function(event),true);

mouseevent 的話,除了 mouseup,mousedown,dblclick 之外,還可以偵測滑鼠的中鍵滾輪 DOMMouseScroll

而滑鼠游標的話:有 clientX,clientY,pageX,pageY 可以選用(詳細的說明可以看這裡)。如果想要跟著滑鼠的位置做出浮動的小框在旁邊,那麼pageX,pageY就是不錯的選擇。

如果要知道滑鼠游標所在的物件,則可以用 target:

event.target

比方說可以把點到的地方改個顏色,並標記出點到區域大小:

event.target.setAttribute(’style’,'background-color: yellow;border-style: solid;border-color: red’);

所以結合 div 的方式,就可以用油猴做出一個用滑鼠選取文字就會自動在旁邊彈出 google 搜尋結果的透明頁面:


var ch=new String();
var box=document.body.appendChild(document.createElement('div'));
var mystyle="position:absolute;background-color: #B2D700;opacity: 0.85;display: block;";
box.setAttribute('style',mystyle);
box.style.overflow='hidden';
box.style.position='absolute';
box.style.visibility='hidden';

window.addEventListener('mouseup',
                            function(evt)
                            {
			    ch=document.getSelection();
                            if(ch.length)
                              {
			      var ypos=evt.pageY - evt.clientY;
			      var xpos=evt.pageX + 20;
			      box.style.top=ypos + 'px';
			      box.style.left=xpos + 'px';
			      box.style.visibility="visible";
			      GM_xmlhttpRequest(
			        {
				method: 'GET',
				url: encodeURI("http://www.google.com.tw/search?q="+'"'+ch+'"'),
				onload: function(req)
				          {
					  pulled=document.createElement('div');
					  pulled.innerHTML=req.responseText;
					  var divlist=pulled.getElementsByTagName('div');
					  for(var i=0;i<divlist.length;i++)
					    {
					    if(divlist[i].id=='res')
					      {
					      box.innerHTML=divlist[i].innerHTML;
					      }
					    }
					  }
				});
			      }
                            },
                            true);

window.addEventListener('DOMMouseScroll',
                            function(evt)
                            {
			    box.style.visibility="hidden";
                            },
                            true);

最後面這個滾輪事件只是讓出來的搜尋結果消失而已。附帶一提,這個腳本需要油猴才可以執行。