FF 57.0 Ersatz für TabMixPlus

Hier geht es um Betas, Nightlies und alle anderen nicht offiziellen Releases.
Benutzeravatar
Zitronella
Senior-Mitglied
Beiträge: 7736
Registriert: Di, 07. Feb 2012 18:06

Re: FF 57.0 Ersatz für TabMixPlus

#31

Beitrag von Zitronella » So, 20. Aug 2017 16:45

klappt in meinem portablen nightly.

Ich fasse mal zusammen, denn ich brauchte auch ewig bis ich das kapiert hatte :oops:

In den Firefox Installationsordner gehört:
die Datei config.js mit folgendem Inhalt:

Code: Alles auswählen

//
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is the userChrome.js component.
 *
 * The Initial Developer of the Original Code is
 * Simon Bünzli <zeniko@gmail.com>
 *
 * Portions created by the Initial Developer are Copyright (C) 2007
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 * alta88 <alta88@gmail.com>
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

try {

/*Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
*/
Components.utils.import("resource://gre/modules/osfile.jsm");

function UserChrome_js() {
  var os = Components.classes["@mozilla.org/observer-service;1"]
                     .getService(Components.interfaces.nsIObserverService);
  os.addObserver(this, "final-ui-startup", false);
};

UserChrome_js.prototype = {
/*// Properties required for XPCOM registration:
  classDescription: "userChromeJS Loading Component",
  classID         : Components.ID("{8DEB3B5E-7585-4029-B6D0-4733CE8DED50}"),
  contractID      : "@userChromeJS;1",

  _xpcom_categories: [{
    category: "app-startup",
    service: true
  }],
*/
/* ........ QueryInterface .................................................. */
/*
  QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsISupports,
                                         Components.interfaces.nsIObserver,
                                         Components.interfaces.nsIModule,
                                         Components.interfaces.nsIFactory,
                                         Components.interfaces.nsIDOMEventListener]),
*/
/* ........ nsIObserver ..................................................... */

  observe: function(aSubject, aTopic, aData) {
    var os = Components.classes["@mozilla.org/observer-service;1"]
                       .getService(Components.interfaces.nsIObserverService);

    switch (aTopic) {
/*  case "app-startup":
    case "profile-after-change":
      os.addObserver(this, "final-ui-startup", false);
      break;
*/  case "final-ui-startup":
      var file = Components.classes["@mozilla.org/file/directory_service;1"]
                           .getService(Components.interfaces.nsIProperties)
                           .get("UChrm", Components.interfaces.nsIFile);
      file.append("userChrome.js");
/*
      if (!file.exists()) {
        var componentFile = __LOCATION__;
        var componentsDir = componentFile.parent;
        var extensionDir = componentsDir.parent;
        extensionDir.append("README.txt");
        if (extensionDir.exists())
          extensionDir.copyTo(file.parent, "userChrome.js");
      }
*/
      if (file.exists() && file.isFile() &&
          !Components.classes["@mozilla.org/xre/app-info;1"]
                     .getService(Components.interfaces.nsIXULRuntime)
                     .inSafeMode) {
        this.mFileURL = Components.classes["@mozilla.org/network/io-service;1"]
                                  .getService(Components.interfaces.nsIIOService)
                                  .getProtocolHandler("file")
                                  .QueryInterface(Components.interfaces.nsIFileProtocolHandler)
                                  .getURLSpecFromFile(file);
        var path = OS.Constants.Path.libDir;
        path = OS.Path.join(path, "userChromeJS.js");
        this.uCFileURI = OS.Path.toFileURI(path);

        os.addObserver(this, "domwindowopened", false);
      }
      break;
    case "domwindowopened":
      aSubject.addEventListener("load", this, true);
      break;
    }
  },

/* ........ nsIDOMEventListener ............................................. */

  handleEvent: function(aEvent) {
    var document = aEvent.originalTarget;
    if (document.location && document.location.protocol == "chrome:") {
      try {
        let loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
                               .getService(Components.interfaces.mozIJSSubScriptLoader);
/*
        loader.loadSubScript("chrome://userChromeJS/content/userChromeJS.js",
                             document.defaultView,
                             "UTF-8");
*/
        loader.loadSubScript(this.uCFileURI,
                             document.defaultView,
                             "UTF-8");

        loader.loadSubScript(this.mFileURL,
                             document.defaultView,
                             "UTF-8");
      }
      catch (ex) {
        // script execution can be stopped with |throw "stop";|
        if (ex !== "stop") {
          Components.utils.reportError(ex);
        }
      }
    }
  }

};

/**
 * The following line is what XPCOM uses to create components. Each component
 * prototype must have a .classID which is used to create it.
 *
 * XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
 */
/*var NSGetFactory = XPCOMUtils.generateNSGetFactory([UserChrome_js]);
*/
new UserChrome_js();

} catch(ex) {
  Components.utils.reportError(ex);
};

sowie die Datei userChromeJS.js mit folgendem Inhalt:

Code: Alles auswählen

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is the userChromeJS utilities.
 *
 * The Initial Developer of the Original Code is
 * alta88 <alta88@gmail.com>
 *
 * Portions created by the Initial Developer are Copyright (C) 2014
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

var EXPORTED_SYMBOLS = ["userChrome"];

/* ........ Utility functions ............................................... */

var userChrome = {
  path: null,
  dirToken: null,

  get loadOverlayDelay () {
    if (!this._loadOverlayDelay)
      this._loadOverlayDelay = 500;
    return this._loadOverlayDelay;
  },

  set loadOverlayDelay(delay) {
    this._loadOverlayDelay = delay;
  },

  get loadOverlayDelayIncr() {
    if (!this._loadOverlayDelayIncr)
      this._loadOverlayDelayIncr = 1600;
    return this._loadOverlayDelayIncr;
  },

  set loadOverlayDelayIncr(delay) {
    this._loadOverlayDelayIncr = delay;
  },

  import: function(aPath, aRelDirToken) {
    let file;
    this.path = aPath;
    this.dirToken = aRelDirToken;

    if (aRelDirToken) {
      // Relative file
      let absDir = this.getAbsoluteFile(aRelDirToken);
      if (!absDir)
        return;
      let pathSep = absDir.path.match(/[\/\\]/)[0];
      file = absDir.path + (aPath == "*" ?
          "" : pathSep + aPath.replace(/[\/\\]/g, pathSep));
    }
    else
      // Absolute file
      file = aPath;

    file = this.getFile(file);
    if (!file)
      return;
    if (file.isFile()) {
      if (/\.js$/i.test(file.leafName))
        this.loadScript(file, aRelDirToken, null);
      else if (/\.xul$/i.test(file.leafName)) {
        let xul_files = [];
        xul_files.push(file);
        this.loadOverlay(xul_files, this.dirToken, null, this.loadOverlayDelay);
//        this.loadOverlayDelay = this.loadOverlayDelay + this.loadOverlayDelayIncr;
      }
      else
        this.log("File '" + this.path +
                 "' does not have a valid .js or .xul extension.", "userChrome.import");
    }
    else if (file.isDirectory())
      this.importFolder(file);
    else
      this.log("File '" + this.path +
               "' is neither a file nor a directory.", "userChrome.import");
  },

  loadScript: function(aFile, aFolder, aRelDirToken) {
    setTimeout(function() {
      Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
                .getService(Components.interfaces.mozIJSSubScriptLoader)
                .loadSubScript(userChrome.getURLSpecFromFile(aFile),
                               null, // defaults to the global object of the caller.
                               userChrome.charSet);
      // log it
      userChrome.log(aRelDirToken ? ("[" + aRelDirToken + "]/" +
          (aFolder && aFolder != "*" ? aFolder + "/" : "") + aFile.leafName) :
          aFile.path, "userChrome.loadScript");
    }, 0);
  },

  // XXX: Due to bug 330458, an overlay must finish before another can be
  // called, otherwise neither are successful.  Implementing an observer to
  // serialize is better left as a fix in the core bug.  Here, settimout values
  // are set to minimize but there is no quarantee; overlay cdata (if any)
  // needs to consider overlay completions and logging does not strictly mean
  // an overlay has completed, rather that the overlay file has been invoked.
  loadOverlay: function(aFiles, aRelDirToken, aFolder, aDelay) {
//userChrome.log(aDelay+" multiple import delay", userChrome.loadOverlay);
    // Increment multiple import delay
    this.loadOverlayDelay = this.loadOverlayDelay + this.loadOverlayDelayIncr;
    setTimeout(function() {
      if (aFiles.length > 0) {
//userChrome.log(userChrome.loadOverlayDelay+" inter folder delay", userChrome.loadOverlay);
        // log it
        userChrome.log(aRelDirToken ? ("[" + aRelDirToken + "]/" +
            (aFolder && aFolder != "*" ? aFolder + "/" : "") + aFiles[0].leafName) :
            aFiles[0].path, "userChrome.loadOverlay");
        document.loadOverlay(userChrome.getURLSpecFromFile(aFiles.shift()), null);
        setTimeout(arguments.callee, userChrome.loadOverlayDelay);
      }
    }, aDelay);
  },

  // Include all files ending in .js and .xul from passed folder
  importFolder: function(aFolder) {
    let files = aFolder.directoryEntries
                       .QueryInterface(Components.interfaces.nsISimpleEnumerator);
    let xul_files = [];

    while (files.hasMoreElements()) {
      let file = files.getNext().QueryInterface(Components.interfaces.nsIFile);
      if (/\.js$/i.test(file.leafName) && file.leafName != "userChrome.js")
        this.loadScript(file, this.path, this.dirToken);
      else if (/\.xul$/i.test(file.leafName)) {
        xul_files.push(file);
      }
    }

    if (xul_files.length > 0)
      this.loadOverlay(xul_files, this.dirToken, this.path);
  },

  getFile: function(aPath, aRelDirToken) {
      try {
        let file = Components.classes["@mozilla.org/file/local;1"]
                             .createInstance(Components.interfaces.nsIFile);
        file.initWithPath(aPath);
        // Bad file doesn't throw on initWithPath, need to test
        if (file.exists())
          return file;
        this.log("Invalid file '" + this.path + (this.dirToken ?
            ("' or file not found in directory with token '" + this.dirToken) :
            "") + "' or other access error.", "userChrome.getFile");
      }
      catch (e) {
        // Bad folder throws on initWithPath
        this.log("Invalid folder '" + this.path + (this.dirToken ?
            ("' or folder not found in directory with token '" + this.dirToken) :
            "") + "' or other access error.", "userChrome.getFile");
      }

    return null;
  },

  getAbsoluteFile: function(aRelDirToken) {
    try {
      let absDir = Components.classes["@mozilla.org/file/directory_service;1"]
                             .getService(Components.interfaces.nsIProperties)
                             .get(aRelDirToken, Components.interfaces.nsIFile);
      return absDir;
    }
    catch (e) {
      this.log("Invalid directory name token '" + this.dirToken +
               "' or directory cannot be accessed.", "userChrome.getAbsoluteFile");
      return null;
    }
  },

  getURLSpecFromFile: Components.classes["@mozilla.org/network/io-service;1"]
                                .getService(Components.interfaces.nsIIOService)
                                .getProtocolHandler("file")
                                .QueryInterface(Components.interfaces.nsIFileProtocolHandler)
                                .getURLSpecFromFile,

  /* Console logger */
  log: function(aMsg, aCaller) {
    Components.classes["@mozilla.org/consoleservice;1"]
              .getService(Components.interfaces.nsIConsoleService)
              .logStringMessage(this.date + " userChromeJS " +
                                (aCaller ? aCaller +": " : "") + aMsg);
  },

  get dateFormat() {
    if (!this._dateFormat)
      this._dateFormat = "%Y-%m-%d %H:%M:%S";
    return this._dateFormat;
  },

  set dateFormat(format) {
    this._dateFormat = format;
  },

  get date() {
    let date = new Date();
    return date.toLocaleFormat(this.dateFormat);
  },

  set charSet(val) {
    this._charSet = val;
  },

  get charSet() {
    if (!this._charSet)
      this._charSet = "UTF-8"; // use "UTF-8". defaults to ascii if null.
    return this._charSet;
  }

};

In den Firefox Installationsordner\defaults\pref
gehört die Datei config-prefs.js mit folgendem Inhalt:

Code: Alles auswählen

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");

Der Firefox Installationsordner ist gewöhnlich zu finden unter:

C:\Program Files\Mozilla Firefox (bei 64bit)
oder
C:\Program Files (x86)\Mozilla Firefox (bei 32bit)
oder
Portable_Firefox\Firefox (beim portablen Firefox von hier )
_______________________________________________________________________________

In den Profilordner\chrome gehört die Datei:
userChrome.js mit folgendem Inhalt:

Code: Alles auswählen

userChrome.import("*", "UChrm");
sowie die Datei eures Skripts wie zb. irgendeiname.uc.js
mit zb. folgendem Inhalt: (Skriptbeispiel für Profilordner.uc.js)

Code: Alles auswählen

  (function () {

       if (location != 'chrome://browser/content/browser.xul') return;

       const buttonId = 'Profilordner';
       const buttonLabel = 'Profil Button';
       const buttonTooltiptext = '';
       const buttonIcon = 'url(data:image/gif;base64,R0lGODlhEAAQAOZMAP/////MAF06AJhlAJNgAP//AP/lAP/UAJViAP/JANShAJRhAP/OAJRgAOy5AMaSAP/nAMyZAP/IAP/NAOazAP/RAMmVALaAAH5TAJNfAM2aAP/dT//XOv/KAOPOkMeRAP/nhOSxAOu4AP3KAOrTkv/nrv//1c6bAKdyAP/TAP/bPdWsMr6LA7iCALqGALiEAJNeAMCMAP/gcv/eYdGdAP/TEP/mgv/2y//gg/3JAP/ila97AP/aKsWPAJFbAJZgALeBAMiVAPC9AP/rOum2AHlQAP/4zP//z//jPpNdAP/LANixNP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAQABAAAAefgEyCg4SFhoeFDQ0LjIiCCyU5IwEBBAiXCAOEBDohFBREIg6jQgibODQKqgonDz0fPkkwDQMEMhYRERpBMUsAv8C1Mw8uLUAXKwA2EgkJDJoEGy8swAAgCZQMz0wEKigkN8wJHZQBFZrcPDsAHErllBMT6AQ1HkYVKQf6++hMGUgAhhgYSBAChH4/TBwpwLAhw35MMAiYSLFiEUcYmQQCADs=)';
       
       function buttonFunction() {
                    Services.dirsvc.get('ProfD', Ci.nsIFile).launch(); 

       }; 
                 
       var button = document.createElement('toolbarbutton');
       button.id = buttonId;
       button.setAttribute('class', 'toolbarbutton-1 chromeclass-toolbar-additional');
       button.removable = 'true';
       button.setAttribute('label', buttonLabel);
       button.setAttribute('tooltiptext', buttonTooltiptext);       
       button.style.listStyleImage = buttonIcon;
       
       button.addEventListener('click', function (event) {
          if (event.button == 0)
             buttonFunction();
       });
       
       document.getElementById('navigator-toolbox').palette.appendChild(button); 

       var toolbars = Array.slice(document.querySelectorAll('toolbar'));
       for (var i=0; i<toolbars.length; i++) {          
          var currentset = toolbars[i].getAttribute('currentset');      
          if (currentset.split(',').indexOf(button.id) >= 0) {      
             var j;
             if (i == 0) j = 1
             else j = 0;         
             toolbars[j].currentSet += ','+button.id;         
             toolbars[i].currentSet = currentset;      
          };      
       };
       
    }) ();

Der Profilordner ist gewöhnlich zu finden unter:

%appdata%\Mozilla\Firefox\Profiles\***.default (*** steht für eine zufällige Zeichenfolge und ist bei jedem anders)
oder
Portable_Firefox\Profilordner (beim portablen Firefox von hier )
Zuletzt geändert von Zitronella am So, 20. Aug 2017 17:12, insgesamt 3-mal geändert.
Hilfe auch im deutschsprachigen Firefox-Chat möglich.
Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

Benutzeravatar
2002Andreas
Moderator
Beiträge: 35491
Registriert: Fr, 04. Jul 2008 19:25
Wohnort: Niedersachsen

Re: FF 57.0 Ersatz für TabMixPlus

#32

Beitrag von 2002Andreas » So, 20. Aug 2017 16:54

Zitronella hat geschrieben:
So, 20. Aug 2017 16:45
klappt in meinem portablen nightly.
:klasse:

Und sehr gut beschrieben bzw. zusammengefasst.
Zitronella hat geschrieben:
So, 20. Aug 2017 16:45
bis ich das kapiert hatte
Das ist ja auch etwas fummelig, kein Grund sich dafür zu :oops: :wink:
Mit freundlichem Gruß
Andreas
Mein System    Meine Add-ons

Benutzeravatar
Boersenfeger
Senior-Mitglied
Beiträge: 50094
Registriert: So, 21. Mär 2004 13:21
Wohnort: Brunswiek anne Oker dranne

Re: FF 57.0 Ersatz für TabMixPlus

#33

Beitrag von Boersenfeger Themen-Starter » So, 20. Aug 2017 17:05

Jetzt müsste man nur mal die bei GitHub gelisteten Scripts prüfen, ob diese mit dieser Funktionsart in 57.0 incl e10 funktionieren....
Wenn ich Stylus mit meinen CSS. Dateien gefüttert kriege (was zur Zeit nicht funktioniert) sowie Violentmonkey mit den GM-Scripten gefüllt habe, könnte ich damit mal anfangen...
Interessanterweise funktionieren manche xul-Dateien noch, dafür andere uc.js-Scripte nicht...
Vielleicht ist das aber auch alles zuviel Arbeit, wenn man im Herbst feststellt, es gibt wieder eine Webextension, was den ganzen Aufwand überflüssig macht... jetzt mal Fertigmachen zur Nachtschicht.. :wink:
Stand 24.11.2017
Mozilla/5.0 (Windows NT 6.1 Win64 x64 rv:57.0) 20100101 Firefox/57.0
Mozilla/5.0 (Windows NT 6.1 Win64 x64 rv:58.0) 20171120 Firefox/58.0b5
Mozilla/5.0 (Windows NT 6.1 Win64 x64 rv:59.0) 20171123 Firefox/59.0a1

Meine Füchse|Fehlersuche|Anleitung für Fragen im Forum|Sicherheitskonzept für Windowsnutzer

Benutzeravatar
Endor
Senior-Mitglied
Beiträge: 11654
Registriert: Fr, 20. Apr 2007 15:41
Wohnort: Irgendwo ganz weit im Süden und doch mitten in den Bergen
Kontaktdaten:

Re: FF 57.0 Ersatz für TabMixPlus

#34

Beitrag von Endor » So, 20. Aug 2017 17:05

Ist perfekt beschrieben.
Zitronella ich ziehe meinen Hut.
Große Klasse!!
:klasse:

Ja funktioniert hier auch bestens im Portablen NIghtly.
Mfg.
Endor
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/Firefox/58.0b1
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/Firefox/59.0

OS: Windows 7 H. P. 64 Bit Versions Info Stand 14.11.2017
Kein Support per PN. Fragen bitte im Forum stellen!

Benutzeravatar
2002Andreas
Moderator
Beiträge: 35491
Registriert: Fr, 04. Jul 2008 19:25
Wohnort: Niedersachsen

Re: FF 57.0 Ersatz für TabMixPlus

#35

Beitrag von 2002Andreas » So, 20. Aug 2017 17:07

Boersenfeger hat geschrieben:
So, 20. Aug 2017 17:05
Wenn ich Stylus mit meinen CSS. Dateien gefüttert krieg
In Stylus gehen keine Codes die den Firefox betreffen, sondern nur Änderungen an Webseiten.
Boersenfeger hat geschrieben:
So, 20. Aug 2017 17:05
Jetzt müsste man nur mal..
Na, dann fang mal an :D
Mit freundlichem Gruß
Andreas
Mein System    Meine Add-ons

Benutzeravatar
Endor
Senior-Mitglied
Beiträge: 11654
Registriert: Fr, 20. Apr 2007 15:41
Wohnort: Irgendwo ganz weit im Süden und doch mitten in den Bergen
Kontaktdaten:

Re: FF 57.0 Ersatz für TabMixPlus

#36

Beitrag von Endor » So, 20. Aug 2017 17:09

@Boersenfeger.
Im Moment funktionieren noch einige der Scripte von Github.
Alle 400 und etwas, kann man nicht testen oder dann anpassen.
Das ist einfach nicht zu schaffen.
Bis Firefox 57 dann als Finale Version auftaucht, werden bestimmt noch mehr
davon den Geist aufgeben. e10s ist da ein wichtiger Grund dafür.
Mal sehen was wird.

// Ich habe zur Zeit Frühschicht, ab 05.00 Uhr Morgens.....
Mfg.
Endor
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/Firefox/58.0b1
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/Firefox/59.0

OS: Windows 7 H. P. 64 Bit Versions Info Stand 14.11.2017
Kein Support per PN. Fragen bitte im Forum stellen!

Benutzeravatar
AngelOfDarkness
Senior-Mitglied
Beiträge: 15377
Registriert: Di, 20. Jul 2004 20:01
Wohnort: Menden

Re: FF 57.0 Ersatz für TabMixPlus

#37

Beitrag von AngelOfDarkness » So, 20. Aug 2017 18:43

So, ich habe nun alle Dateien nochmal neu angelegt. Nun scheint es soweit zu funktionieren. Danke nochmals ;) Allerdings öffnet OpenNewTab.us.js nicht alles im neuen Tab. Aus der Searchbar (wird auch nicht geleert) habe ich nur einen neuen Tab, wenn ich browser.search.openintab auf true stehen habe, entgegen dem Hinweis
In den Configs sollte browser.search.openintab auf false stehen.
Von about:home/about:newtab bzw. allen about:-Seiten aus wird ebenfalls kein neuer Tab geöffnet, ebenso wenig wie von Links die auf eine externe URL zeigen.
„Mutter ist der Name für Gott, auf den Lippen und in den Herzen aller Kinder dieser Welt.“ (The Crow)

verwendete Browser und Erweiterungen - Sicherheitskonzept für Windowsnutzer

Benutzeravatar
Road-Runner
Senior-Mitglied
Beiträge: 26073
Registriert: So, 09. Mai 2004 19:37
Wohnort: Luxemburg

Re: FF 57.0 Ersatz für TabMixPlus

#38

Beitrag von Road-Runner » So, 20. Aug 2017 22:30

Endor hat geschrieben:
So, 20. Aug 2017 13:36
Teste mal dieses Script dazu:
https://github.com/ardiman/userChrome.j ... opennewtab
Das hat aborix erst kürzlich aktualisiert.
Vielen Dank. Das war das einzige Feature von TMP was mir noch gefehlt hat.
Meine Fuchskonfiguration - Firefox-Infos, Tipps & Tricks
Ich leiste keinen Support per Mail oder PN. Poste Deine Frage bitte im Forum.

Benutzeravatar
aborix
Senior-Mitglied
Beiträge: 3801
Registriert: So, 06. Sep 2009 0:57

Re: FF 57.0 Ersatz für TabMixPlus

#39

Beitrag von aborix » Mo, 21. Aug 2017 8:40

bejot hat geschrieben:
So, 20. Aug 2017 14:19
Ich benötige noch ein script um Tabs mit "doppelklick" zu schließen.
Leider klappt es mit "dblclick" von aborix aus dem Jahr 2012 nicht
Das ist, glaube ich, nicht von mir.
Aber egal, damit geht es:

Code: Alles auswählen

gBrowser.tabContainer.addEventListener('dblclick', function(event) {
  if (event.target.localName == 'tab' && event.button == 0) {
    gBrowser.removeTab(event.target, {animate: true});
  }
});


Migo
Mitglied
Beiträge: 105
Registriert: Mi, 25. Aug 2010 9:12

Re: FF 57.0 Ersatz für TabMixPlus

#40

Beitrag von Migo » Mo, 21. Aug 2017 10:07

Road-Runner hat geschrieben:
So, 20. Aug 2017 22:30
Endor hat geschrieben:
So, 20. Aug 2017 13:36
Teste mal dieses Script dazu:
https://github.com/ardiman/userChrome.j ... opennewtab
Das hat aborix erst kürzlich aktualisiert.
Vielen Dank. Das war das einzige Feature von TMP was mir noch gefehlt hat.
Huhu,

geht bei Dir denn die Funktion: Open Link in New Tab? Bei mir geht hier nur die Funktion: Open Bookmark in New Tab.

Benutzeravatar
Road-Runner
Senior-Mitglied
Beiträge: 26073
Registriert: So, 09. Mai 2004 19:37
Wohnort: Luxemburg

Re: FF 57.0 Ersatz für TabMixPlus

#41

Beitrag von Road-Runner » Mo, 21. Aug 2017 15:50

Definitiv Ja. Ein einfacher Linksklick auf den Link in Deinem Beitrag öffnet die Seite in einem neuen Tab.
link.png
Meine Fuchskonfiguration - Firefox-Infos, Tipps & Tricks
Ich leiste keinen Support per Mail oder PN. Poste Deine Frage bitte im Forum.

Benutzeravatar
AngelOfDarkness
Senior-Mitglied
Beiträge: 15377
Registriert: Di, 20. Jul 2004 20:01
Wohnort: Menden

Re: FF 57.0 Ersatz für TabMixPlus

#42

Beitrag von AngelOfDarkness » Mo, 21. Aug 2017 16:21

Also bei mir verhält sich OpenNewTab wie in Beitrag #37 von mir beschrieben.
„Mutter ist der Name für Gott, auf den Lippen und in den Herzen aller Kinder dieser Welt.“ (The Crow)

verwendete Browser und Erweiterungen - Sicherheitskonzept für Windowsnutzer

Benutzeravatar
Boersenfeger
Senior-Mitglied
Beiträge: 50094
Registriert: So, 21. Mär 2004 13:21
Wohnort: Brunswiek anne Oker dranne

Re: FF 57.0 Ersatz für TabMixPlus

#43

Beitrag von Boersenfeger Themen-Starter » Mo, 21. Aug 2017 17:07

Hier funktioniert ein neuer Tab aus der Suche (egal, wie die about:config Einstellung ist), alles andere nicht... allerdings ists kein ganz neues Profil...
Stand 24.11.2017
Mozilla/5.0 (Windows NT 6.1 Win64 x64 rv:57.0) 20100101 Firefox/57.0
Mozilla/5.0 (Windows NT 6.1 Win64 x64 rv:58.0) 20171120 Firefox/58.0b5
Mozilla/5.0 (Windows NT 6.1 Win64 x64 rv:59.0) 20171123 Firefox/59.0a1

Meine Füchse|Fehlersuche|Anleitung für Fragen im Forum|Sicherheitskonzept für Windowsnutzer

Benutzeravatar
Endor
Senior-Mitglied
Beiträge: 11654
Registriert: Fr, 20. Apr 2007 15:41
Wohnort: Irgendwo ganz weit im Süden und doch mitten in den Bergen
Kontaktdaten:

Re: FF 57.0 Ersatz für TabMixPlus

#44

Beitrag von Endor » Mo, 21. Aug 2017 17:09

Ich habe es hier in einem neuen Profil im Nightly getestet. Es wird egal von wo
alles in einem neuen Tab geöffnet.
Mfg.
Endor
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:57.0) Gecko/20100101 Firefox/57.0
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/Firefox/58.0b1
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/Firefox/59.0

OS: Windows 7 H. P. 64 Bit Versions Info Stand 14.11.2017
Kein Support per PN. Fragen bitte im Forum stellen!

Benutzeravatar
Zitronella
Senior-Mitglied
Beiträge: 7736
Registriert: Di, 07. Feb 2012 18:06

Re: FF 57.0 Ersatz für TabMixPlus

#45

Beitrag von Zitronella » Mo, 21. Aug 2017 17:20

mal ne Frage am Rande: Das ist zwar alles ganz gut und schön mit den Skripten (auch wenn ich das vorher noch nie benutzt habe und jetzt nur testweise im portablen Firefox) aber ist das ganze evtl. ein erhöhtes Sicherheitsrisiko? Nicht umsonst darf man eigentlich nicht im Installationsordnern was rein schreiben (erhöhte Rechte)?
Hilfe auch im deutschsprachigen Firefox-Chat möglich.
Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

Antworten

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 3 Gäste