Personnalisation des moteurs de recherche dans FVD Speed Dial : Désactivation de la détection auto et ajout de la sélection de fournisseur
Après un changement de paramètres réseau (VPN, proxy, DNS), la barre de recherche de l'onglet nouveau dans l'extension FVD Speed Dial version 81.8.3 (ID : llaficoajjainaijghjlofdfmbjpebpa) a commencé à rediriger toutes les requêtes vers Yahoo. Le moteur de recherche par défaut du navigateur n'avait aucun impact sur le comportement de l'extension. L'identification du problème dans js/newtab/search.js et styles/newtab/style.css a permis d'ajouter la sélection de fournisseur sans détection automatique.
Localisation des fichiers de l'extension
L'extension est stockée dans le répertoire du navigateur :
- Cent Browser (version portable) :
CentBrowserPortable\User Data\Default\Extensions\llaficoajjainaijghjlofdfmbjpebpa\81.8.3_0\ - Windows (Chrome) :
C:\Users\<nom_utilisateur>\AppData\Local\Google\Chrome\User Data\Default\Extensions\<id>\<version>_0\ - Linux :
~/.config/google-chrome/Default/Extensions/<id>/<version>_0/
Trouvez le chemin via chrome://extensions → « Mode développeur » → « Détails ».
Fichiers clés à modifier :
js/newtab/search.js— logique de recherche et fournisseurs.styles/newtab/style.css— styles et icônes.
Analyse du code de search.js
search.js définit l'objet Search.prototype.searchProviders avec les fournisseurs :
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) { /* logique de domaine */ }
},
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}"
}
};
Les paramètres sont sauvegardés dans sd.searchprovider. La fonction doSearch() appelle getProvider() et detectProvider() uniquement pour fvd. La détection automatique basée sur la locale et l'IP sélectionne le fournisseur (Yahoo avec VPN).
La fonction fill() génère des éléments <li provider="<key>"> pour les listes UI #searchList et #searchLogo.
Modification du gestionnaire de sélection de fournisseur
Gestionnaire de clic mis à jour :
Search.prototype.clickProvider = function(option) {
const provider = option.attr("provider");
this.setProvider(provider); // sauvegarde dans sd.searchprovider
this.fill(); // met à jour le logo et le menu
this.menu("close");
};
doSearch() mis à jour :
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;
};
Logique : Les choix explicites (Google, Yandex, etc.) contournent la détection automatique ; fvd l'utilise.
Correction du CSS pour les icônes
Dans style.css, décommenté et corrigé les sélecteurs pour #searchLogo :
.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); }
Les icônes (providergoogle.png, etc.) sont déjà dans images/. Après les modifications, le logo se met à jour dynamiquement.
Points clés à retenir
- La sélection de fournisseur persiste dans
sd.searchproviderentre les sessions. - Détection automatique uniquement pour
fvd— les autres fournisseurs utilisent des URL fixes. - Mise à jour de l'interface instantanée via
fill()aprèssetProvider(). - Icônes activées en décommentant les sélecteurs CSS.
- Compatibilité totale avec les fonctionnalités existantes :
Analytics.fireSearchEvent,replace()de Yandex.
— Editorial Team
Aucun commentaire pour le moment.