2017-05-12 3 views
-1

Mozilla Addon hat eine MatchPattern API, die URL mit einem Muster vergleicht. Was ich suche, ist kein festes URL-Muster, sondern eine vom Benutzer angegebene Liste. Die Beispiele in dem von mozilla bereitgestellten Link setzen ein hartkodiertes Muster voraus. Wie kann ich die Variable match liest eine Liste von URLs im Speicher?Wie Liste der Muster durch den Benutzer in Firefox Erweiterung eingegeben

var match = new MatchPattern("*://mozilla.org/"); 

var uri = BrowserUtils.makeURI("https://mozilla.org/"); 
match.matches(uri); //  < true 

uri = BrowserUtils.makeURI("https://mozilla.org/path"); 
match.matches(uri); //  < false 
+0

Ihre Frage ist unklar. Bitte geben Sie zumindest Beispiele dafür, was Sie wünschen. – Makyen

+0

FYI: Wenn möglich, sollten Sie [WebExtensions] (https://developer.mozilla.org/en-US/Add-ons/WebExtensions) anstelle des Add-on SDK verwenden. Ab diesem Zeitpunkt werden nur WebExtension-basierte Erweiterungen zur Überprüfung und Auflistung auf AMO akzeptiert (Sie können weiterhin Aktualisierungen für bereits aufgelistete Erweiterungen bereitstellen, die nicht auf WebExtensions basieren). Die Unterstützung für nicht auf WebExtensions basierende Erweiterungen wird ab der Firefox-Version 57, die für 2017-11-14 geplant ist, aus der Release-Version von Firefox entfernt. – Makyen

Antwort

0

Dies wurde so trivial. Wenn Sie die Referenz-URLs in einem Array gespeichert haben, erstellen Sie einfach ein Muster und durchlaufen Sie die Array-Elemente nacheinander, bis Sie eine Übereinstimmung der URL mit einem der Array-Elemente gefunden haben.

Ich endete mit search Funcion eher als match. Das Stück sieht so aus:

//the url to be tested. 
var url="www.example.com"; 
for (var x=0; x<myArray.length; x++) //loop over the list 
{ 
//for a constructing a RegEx in a string. 
//the following says the pattern startes with myArray[x], followed by "/[anything]/" 
//We use "\\" in the string to represent "\" in the Regex. 
//We write "\\/" in the string to represent the Regex "\/" 

var pattern= "("+myArray[x]+")"+"(\\/.*)*(\\/)*";" 

//test if the pattern equals the value 

if(url.search(pattern)==0) 
console.log("url matched"); 
else 
console.log("url did not match"); 
}//end for 
Verwandte Themen