Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
- //Cu.import("resource://gre/modules/PopupNotifications.jsm");
- Cu.import("resource://gre/modules/Services.jsm");
- var AutoFocusUrlbar = {
- cs: Services.console, // nsIConsoleService
- ww: Services.ww, // nsIWindowWatcher
- wm: Services.wm, // nsIWindowMediator
- ps: Services.prefs,
- get doc() {
- return this.wm.getMostRecentWindow("navigator:browser").document;
- },
- get eres() {
- return this.ps.getCharPref('extensions.AutoFocusUrlbar.excludeChar');
- },
- handleEvent: function (e) {
- var document = this.doc;
- var elm = document.activeElement;
- while (1) {
- if (elm == null) return;
- if (elm.localName == "browser" || elm.localName == "iframe" ||
- elm.localName == "frame") {
- elm = elm.contentDocument.activeElement;
- continue;
- }
- break;
- }
- if (elm.ownerDocument.designMode == 'on' ||
- elm.localName == "input" || elm.localName == "textarea" ||
- elm.localName == "select" ||
- elm.isContentEditable) return;
- var mod = e.ctrlKey || e.metaKey || e.altKey;
- if (mod) return;
- var c = String.fromCharCode(e.charCode);
- var excludePattern;
- try {
- var excludeRegExpString = this.eres;
- excludePattern = new RegExp(excludeRegExpString);
- } catch (err) {
- excludePattern = /[^a-zA-Z]/;
- }
- if (excludePattern.test(c)) return;
- var urlbar = document.getElementById("urlbar");
- if (!urlbar) return;
- e.preventDefault();
- urlbar.focus();
- try {
- urlbar.value = '';
- var evt = document.createEvent("KeyboardEvent");
- evt.initKeyEvent('keypress', false, true, null,
- false, false, false, false, 0, e.charCode);
- var input = urlbar.inputField;
- input.dispatchEvent(evt);
- } catch (err) {
- urlbar.value = c;
- }
- },
- aListener: {
- onOpenWindow: function (aWindow) {
- var win = aWindow.docShell.QueryInterface(Ci
- .nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow);
- win.addEventListener("load", function () {
- win.removeEventListener("load", arguments.callee, true);
- if (win.document.documentElement.getAttribute("windowtype") !=
- "navigator:browser") return;
- win.addEventListener("keypress", AutoFocusUrlbar, false);
- }, true);
- },
- onCloseWindow: function (aWindow) {},
- onWindowTitleChange: function (aWindow, aTitle) {},
- },
- startup: function () {
- this.wm.addListener(this.aListener);
- var cw = this.wm.getEnumerator("navigator:browser");
- while (cw.hasMoreElements()) {
- var win = cw.getNext().QueryInterface(Ci.nsIDOMWindow);
- win.addEventListener("keypress", this, false);
- }
- },
- shutdown: function () {
- this.wm.removeListener(this.aListener);
- var cw = this.wm.getEnumerator("navigator:browser");
- while (cw.hasMoreElements()) {
- var win = cw.getNext().QueryInterface(Ci.nsIDOMWindow);
- win.removeEventListener("keypress", this, false);
- }
- }
- }
- // å¯ç”¨
- function startup(data, reason) {
- var cs = Services.console;
- AutoFocusUrlbar.startup();
- }
- // ç¦ç”¨æˆ–应用程åºé€€å‡º
- function shutdown(data, reason) {
- AutoFocusUrlbar.shutdown();
- }
- // 安装
- function install(data, reason) {
- }
- // å¸è½½
- function uninstall(data, reason) {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement