zoukankan      html  css  js  c++  java
  • 在FireFox中实现类GreenBrowser的右键拖动

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

    源码如下:
    // ==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);

  • 相关阅读:
    SDN第二次上机作业
    SDN第二次作业
    SDN第一次上机作业
    个人作业-软件产品案例分析
    pandas之Series
    pandas简答介绍
    python爬取英文名
    python爬取动态网页
    python画树
    Python存储数据的方式
  • 原文地址:https://www.cnblogs.com/amonw/p/449883.html
Copyright © 2011-2022 走看看