2016-08-07 1 views
0

Erstellen einer Kontextmenü-Chrome-Erweiterung, um markierten Text über verschiedene Systeme zu durchsuchen.Chrome-Erweiterung: Aufteilen der Auswahl in zwei Suchzeichenfolgen

Derzeit werden Suchanfragen ausgeführt, indem markierter Text ausgewählt und am Ende einer Such-URL hinzugefügt wird. Zum Beispiel:

{ 
var searchstring = info.selectionText; 
chrome.tabs.create({url: "http://www.intodns.com/"+searchstring}) 
} 

Die Suche URL für eNom Domain-Verwaltung teilt den Suchbegriff in zwei Teile, SLD und TLD wie folgt:

http://www.enom.com/domains/control-panel/default.aspx?sld=DOMAIN&tld=COM

Der Versuch, einen Weg, um herauszufinden, spaltete sich die Auswahl Text in zwei Teile, SLD und Tld, dann stecken Sie jeden Teil an der entsprechenden Stelle in der Such-URL.

End Ergebnis würde einem Benutzer erlauben „stackoverflow.com“, führen Sie die Suche über das Kontextmenü zu markieren, und mit einem neuen Tab auf der folgenden URL am Ende:

http://www.enom.com/domains/control-panel/default.aspx?sld=stackoverflow&tld=com

+0

So möchten Sie einfach nur ein 'searchstring' wie "stackoverflow.com" in "Stackoverflow" und "com" oder "google.co.uk" in "google" und "co.uk"drehen? – Whothehellisthat

+0

Das ist der erste Schritt, der zweite Schritt besteht darin, diese beiden Teile in die Such-URL zu stecken. – mrsamsa07

+0

Für eine universelle Erkennung von TLD ist es besser, [Liste öffentlicher Suffixe] (https://publicssuffix.org/learn/) und [publicsuffixlist .js] (https://github.com/gorhill/publicssuffixlist.js) Bibliothek: 'publicSuffixList.getPublicSuffix ('stackoverflow.com')' und 'publicSuffixList.getDomain ('stackoverflow.com')' – wOxxOm

Antwort

0

Ich habe versucht, um es robuster zu machen; Es sollte nicht "www" enthalten. wenn es am Anfang ist, aber wenn es ein "www" gibt. Später wird es aus irgendeinem Grund erlauben.

var searchstring = info.selectionText; 

var parts = searchstring.match(/^(?:\w+:\/\/\/?)?(?:www\.)?([^\.]+)\.(.+)/i); 

var name = parts[1], com = parts[2]; 

chrome.tabs.create({url: "http://www.enom.com/domains/control-panel/default.aspx?sld="+name+"&tld="+com}) 
+0

Danke, das funktioniert perfekt! Ich bin neugierig, gibt es eine Möglichkeit, dies zu tun, wenn das "www." ist in der Auswahl enthalten? Dieser Code geht davon aus, dass er weggelassen wird, da nur ein "." . Vielleicht etwas, um es zu zwingen, "www" zu ignorieren. speziell? – mrsamsa07

+0

Diese Version gibt die folgende URL zurück, wenn "www.stackoverflow.com" ausgewählt ist: http://www.enom.com/domains/control-panel/default.aspx?sld=www.s&tld=www – mrsamsa07

+0

Ah. Wie funktioniert das für dich? – Whothehellisthat

Verwandte Themen