« 用 GM_xmlhttpRequest 連結有密碼保護的網頁 Gmail spam mails always have checked sign »
Thu 12 Jun 2008
在 《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);
最後面這個滾輪事件只是讓出來的搜尋結果消失而已。附帶一提,這個腳本需要油猴才可以執行。