发新话题
打印

在火狐中实现类似GreenBrowser的右键拖动的方法

在火狐中实现类似GreenBrowser的右键拖动的方法

一直找不到在Fierfox火狐浏览器中实现类似GreenBrowser中的右键拖动页面的插件,想要自己写一个吧,好像挺复杂的。今天看到有一个GreaseMonkey的插件容器,大大降低自己写火狐浏览器插件的难度,于是写了一个,只有几十行。其中被一个陷阱困惑了很久,就是GreaseMonkey的Javascript脚本中不能用类似window.onmousedown=function(){}的方式来处理事件,必须用window.addEventListerner ('mousedown',function(){},true)来处理,其中原因请看http://www.oreillynet.com/pub/a/ ... itfalls.html?page=3。

Amonw's Weblog 源码如下:
复制内容到剪贴板
代码:
// ==UserScript ==
// @name Right Mouse Dragging
// @namespace http://amonw.cnblogs.com/rightmousedragging
// @description Use right mouse button to drag your web pages
// @include       *
// ==/UserScript==
/*
Version:1.0
Author: Amonw
     http://amonw.cnblogs.com
Change log:
Ver 1.0: First version
*/
var beginDrag=beginDragX=beginDragY=0;
function f(E)
{
E.preventDefault();
E.stopPropagation();
return false;
}

window.addEventListener('mousedown',function(E)
{
if(E.button==2 && beginDrag==0)
{
  beginDrag=1;
  beginDragX=E.screenX;
  beginDragY=E.screenY;
}
document.removeEventListener('contextmenu',f,true);
},true);

window.addEventListener('mousemove',function(E)
{
if(beginDrag==1 && (beginDragX!=E.screenX || beginDragY!=E.screenY))
{
  document.addEventListener('contextmenu',f,true);
  window.scrollBy((beginDragX-E.screenX),(beginDragY-E.screenY));
  beginDragX=E.screenX;
  beginDragY=E.screenY;
}
},true);

window.addEventListener('mouseup',function(E)
{
if(E.button==2 && beginDrag==1)
{
  beginDrag=0;
  E.preventDefault();
  E.stopPropagation();
  E.returnValue=false;
}
},true);
[ 本帖最后由 jion 于 2008-3-2 14:23 编辑 ]

TOP

我的本本一直都是opera浏览器在裸奔
  从未有过病毒什么~
  
  因为需要玩音乐软件所以用不了Linux
  最近又觉得Opera的Speed Dial 个数少了点~
  想入手 FireFox3.0 试试~
不知道Firefox3.0 抗病毒能力如何?


  至今没中过,就连一个流氓软件都没有
  卡巴算是白买了…… Firefox有扩展可以实现Speed Dial功能,不过我觉得这功能不实用

TOP

发新话题