Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
- Cu.import("resource://gre/modules/Services.jsm");
- // called by aWindow.addEventListener("click", clicker, true);
- var clicker = function(e) {
- let aWindow = this.window;
- // middle click
- if( e.button === 1 ) {
- e.stopPropagation();
- runAction(e, aWindow);
- } else return false;
- };
- var runAction = function(e, aWindow) {
- // initial, it used to work
- aWindow.gBrowser.selectedBrowser.startScroll(e);
- // failed attempt 1
- //
- //aWindow.messageManager.sendAsyncMessage("Autoscroll:Start", {scrolldir:"NSEW", screenX:e.screenX, screenY:e.screenY});
- // failed attempt 2
- //
- //aWindow.gBrowser.selectedBrowser.messageManager.sendAsyncMessage("Autoscroll:Start", {scrolldir:"NSEW", screenX:e.screenX, screenY:e.screenY});
- };
- /* -------------------------------------------------------*
- ** Bootstrapped
- ** -------------------------------------------------------*/
- function install(data, reason) {
- }
- function uninstall(data, reason) {
- }
- function startup(data, reason) {
- let windows = Services.wm.getEnumerator("navigator:browser");
- while (windows.hasMoreElements()) {
- let domWindow = windows.getNext().QueryInterface(Ci.nsIDOMWindow);
- loadIntoWindow(domWindow);
- }
- // Load into any new windows
- Services.wm.addListener(windowListener);
- }
- function shutdown(data, reason) {
- Services.wm.removeListener(windowListener);
- let windows = Services.wm.getEnumerator("navigator:browser");
- while (windows.hasMoreElements()) {
- let domWindow = windows.getNext().QueryInterface(Ci.nsIDOMWindow);
- unloadFromWindow(domWindow);
- }
- }
- var loadIntoWindow = function(aWindow) {
- if (!aWindow)
- return;
- aWindow.addEventListener("click", clicker, true);
- }
- var unloadFromWindow = function(aWindow) {
- if (!aWindow)
- return;
- aWindow.removeEventListener("click", clicker, true);
- }
- var windowListener = {
- onOpenWindow: function(aWindow) {
- // Wait for the window to finish loading
- let domWindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow);
- domWindow.addEventListener("load", function() {
- domWindow.removeEventListener("load", arguments.callee, false);
- loadIntoWindow(domWindow);
- }, false);
- },
- onCloseWindow: function(aWindow) {},
- onWindowTitleChange: function(aWindow, aTitle) {}
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement