Zurück zur Startseite

FVD Speed Dial-Anpassung: Suchmaschinen-Auswahl

Der Artikel beschreibt die Modifikation von FVD Speed Dial, um Suchmaschinen-Auswahl hinzuzufügen und Yahoo Auto-Detection zu deaktivieren. Aufschlüsselung des search.js- und style.css-Codes mit Beispielen. Ergebnis: Speichern der Auswahl, dynamische Icons und Kompatibilität mit Auto-Detection im fvd-Modus.

Yahoo in FVD Speed Dial deaktivieren: Fügen Sie Ihre eigene Suchmaschine hinzu
Advertisement 728x90

Suchmaschinen in FVD Speed Dial anpassen: Auto-Erkennung deaktivieren und Anbieter wählen

Nach Änderung der Netzwerkeinstellungen (VPN, Proxy, DNS) leitete die Suchleiste im neuen Tab der Erweiterung FVD Speed Dial Version 81.8.3 (ID: llaficoajjainaijghjlofdfmbjpebpa) alle Anfragen an Yahoo weiter. Die Standardsuchmaschine des Browsers hatte keinen Einfluss auf das Verhalten der Erweiterung. Durch Analyse der Dateien js/newtab/search.js und styles/newtab/style.css wurde die Auswahl des Anbieters ohne Auto-Erkennung ermöglicht.

Erweiterungsdateien finden

Die Erweiterung liegt im Browser-Verzeichnis:

  • Cent Browser (portable): CentBrowserPortable\User Data\Default\Extensions\llaficoajjainaijghjlofdfmbjpebpa\81.8.3_0\
  • Windows (Chrome): C:\Users\<Benutzername>\AppData\Local\Google\Chrome\User Data\Default\Extensions\<id>\<version>_0\
  • Linux: ~/.config/google-chrome/Default/Extensions/<id>/<version>_0/

Pfad über chrome://extensions → „Entwicklermodus“ → „Details“ ermitteln.

Google AdInline article slot

Zu bearbeitende Dateien:

  • js/newtab/search.js — Suchlogik und Anbieter.
  • styles/newtab/style.css — Stile und Icons.

Code in search.js analysieren

search.js definiert das Objekt Search.prototype.searchProviders mit Anbietern:

Search.prototype.searchProviders = {
  fvd: {
    name: "Speed Dial",
    url: "https://fvdmedia.com/addon/search?qq={q}&from=chromefvdsd&installtime={time}&searchtype={type}"
  },
  yandex: {
    name: "Yandex",
    url: "https://yandex.ru/yandsearch?clid=2028026&text={q}",
    locale: ["ru", "by", "kz", "uz", "uk", "kg"],
    ip: ["ru", "by", "kz", "uz", "uk", "ua", "kg"],
    replace: function(url) { /* Domain-Logik */ }
  },
  bing: {
    name: "Bing",
    url: "https://search.fvdspeeddial.com/results.aspx?gd=SY1002769&searchsource=69&q={q}"
  },
  yahoo: {
    name: "Yahoo",
    url: "https://search.fvdspeeddial.com/results.aspx?gd=SY1002769&searchsource=69&q={q}"
  },
  google: {
    name: "Google",
    url: "https://www.google.com/search?q={q}"
  },
  duckduckgo: {
    name: "DuckDuckGo",
    url: "https://duckduckgo.com/?q={q}"
  }
};

Einstellungen werden in sd.searchprovider gespeichert. Die Funktion doSearch() ruft getProvider() und detectProvider() nur für fvd auf. Die Auto-Erkennung basierend auf Locale und IP wählt den Anbieter (Yahoo bei VPN).

Google AdInline article slot

Die Funktion fill() erzeugt <li provider="<key>">-Listenelemente für die UI-Elemente #searchList und #searchLogo.

Handler für Anbieterauswahl anpassen

Aktualisierter Click-Handler:

Search.prototype.clickProvider = function(option) {
  const provider = option.attr("provider");
  this.setProvider(provider); // speichert in sd.searchprovider
  this.fill();                // aktualisiert Logo und Menü
  this.menu("close");
};

Aktualisierte doSearch():

Google AdInline article slot
jsSearch.prototype.doSearch = async function(query) {
  const fvdSpeedDial = this.fvdSpeedDial;
  const Prefs = fvdSpeedDial.Prefs;
  let url;

  if (!query) {
    const q = document.getElementById("q");
    if (q.hasAttribute("clickUrl")) {
      query = q.getAttribute("clickUrl");
    } else {
      query = q.value;
    }
  }

  if (typeof query === "object" && query.clickurl) {
    url = query.clickurl;
  } else {
    let provider = this.getProvider();

    if (provider === "fvd") {
      provider = this.detectProvider();
    }

    const providerData = this.searchProviders[provider];

    if (String(query).trim().length === 0) {
      return false;
    }

    await Analytics.fireSearchEvent(query, providerData?.name);

    url = String(providerData.url)
      .replace("{q}", encodeURIComponent(query))
      .replace("{time}", Prefs.get("sd.installtime"))
      .replace("{type}", Utils.getInstallVersion(fvdSpeedDial) >= 6930 ? 0 : 1)
      .replace("{version}", Utils.getCurrentVersion());

    if (typeof providerData.replace === "function") {
      url = providerData.replace(url);
    }
  }

  document.location = url;
};

Logik: Explizite Auswahlen (Google, Yandex usw.) umgehen die Auto-Erkennung; fvd nutzt sie.

CSS für Icons korrigieren

In style.css Selektoren für #searchLogo auskommentiert und behoben:

.searchLogo {
  cursor: pointer;
  width: 32px;
  height: 32px;
  display: inline-block;
  background-repeat: no-repeat;
  background-size: 32px 32px;
  background-position: center center;
  margin-right: 5px;
  margin-top: -2px;
  position: relative;
  opacity: 1;
  transition: opacity 75ms;
  background-image: url(images/providerfvd.png);
}

.searchLogo[provider="fvd"]         { background-image: url(images/providerfvd.png); }
.searchLogo[provider="yandex"]      { background-image: url(images/provideryandex.png); }
.searchLogo[provider="yahoo"]       { background-image: url(images/provideryahoo.png); }
.searchLogo[provider="bing"]        { background-image: url(images/providerbing.png); }
.searchLogo[provider="google"]      { background-image: url(images/providergoogle.png); }
.searchLogo[provider="duckduckgo"]  { background-image: url(images/providerduckduckgo.png); }

Icons (providergoogle.png usw.) liegen bereits in images/. Nach den Änderungen aktualisiert sich das Logo dynamisch.

Wichtige Erkenntnisse

  • Anbieterauswahl bleibt erhalten in sd.searchprovider über Sitzungen hinweg.
  • Auto-Erkennung nur für fvd — andere Anbieter verwenden feste URLs.
  • UI aktualisiert sofort über fill() nach setProvider().
  • Icons aktiviert durch Auskommentieren der CSS-Selektoren.
  • Vollständige Kompatibilität mit bestehenden Funktionen: Analytics.fireSearchEvent, Yandex replace().

— Editorial Team

Advertisement 728x90

Weiterlesen