Wie erhalte ich die URL zur aktuellen Suchmaschine in Firefox?

662
Smile4ever

Um den Namen der aktuellen Suchmaschine zu erhalten, reicht es aus, browser.search.defaultenginename zu lesen.

Um jedoch die URL der Suchmaschine zu erhalten (beispielsweise https://duckduckgo.com/?q= ), habe ich keine Ahnung.

Schlüsselwort.url wurde einmal verwendet, ist jedoch nicht mehr verfügbar.

Ich möchte JavaScript verwenden, um die URL zu erhalten.

0
Ich glaube, Sie können [`browser.search.defaulturl`] verwenden (http://kb.mozillazine.org/Firefox_:_FAQs_:_About:config_Entries#Browser.). MC10 vor 8 Jahren 0
browser.search.defaulturl ist in Firefox 38 oder einer aktuellen Version nicht verfügbar Smile4ever vor 8 Jahren 0
Ich denke, diese Seite muss dann aktualisiert werden. Ich konnte keinen `about: config`-Eintrag mit einer URL finden. Als nächstes wäre es wahrscheinlich am besten, `browser.search.defaultenginename` zu ​​erhalten und es einer URL im Code zuzuordnen. MC10 vor 8 Jahren 0
Das war auch mein Gedanke. Aber auf diese Weise müsste ich jede mögliche Suchmaschine implementieren. Natürlich kann ich die beliebtesten nur implementieren, um die Arbeit zu reduzieren. Smile4ever vor 8 Jahren 0

1 Antwort auf die Frage

0
Smile4ever

Tatsächlich ist es möglich, die URL der aktuellen Suchmaschine über den Browser Search Service (BSS) abzurufen.

Bitte beachten Sie, dass Sie Suchbegriffe eingeben müssen, damit dies funktioniert. Ein einzelnes Leerzeichen funktioniert nicht (Sie können die Suchparameter nach = immer wieder entfernen)

Dieser Code wurde in Pale Moon als Addon-Code getestet.

 var browserengine = "google"; // if all else fails  try{ // does work for all search engines, except the default one browserengine = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch).getCharPref("browser.search.defaultenginename"); }catch(e){ alert("You don't seem to have search engines installed. Defaulting to Google."); }  // if the selected engine is the default engine, get the value from the // default preferences branch in order to avoid this value: // chrome://browser-region/locale/region-properties if(browserengine.indexOf("chrome://") > -1){ try{ var branch = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch).getBranch("browser.search."); var value = branch.getComplexValue("defaultenginename",Components.interfaces.nsIPrefLocalizedString).data; browserengine = value; }catch(e){ // this should not happen alert("Failed to retrieve the default search engine."); } } browserengine = browserengine.toLowerCase(); // to compare with lowercase values  // The magic begins here var bss = Components.classes["@mozilla.org/browser/search-service;1"].getService(Components.interfaces.nsIBrowserSearchService); var engines = bss.getVisibleEngines({}); var i = 0;  // get current search engine URL // mimic browser.search.defaulturl based on browser.search.defaultenginename  for(i = 0; i < engines.length; i++){  if(engines[i].name.toLowerCase() == browserengine){ // we don't have the URL of browser.search.defaultenginename, but we can get it now! alert("The URL to the engine is " + engines[i].getSubmission("search terms here (required)", null).uri.spec);  } }