2017-05-12 11 views
-1

Mozilla Addon에는 URL과 패턴을 비교하는 MatchPattern API가 있습니다. 내가 찾는 것은 고정 된 URL 패턴이 아니라 사용자가 제공 한 목록입니다. mozilla가 제공하는 링크의 예제는 하드 코딩 된 패턴을 가정합니다. 변수 match이 저장소의 URL 목록을 읽게하려면 어떻게해야합니까?Firefox에서 사용자가 입력 한 패턴 목록을 일치시키는 방법

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

질문이 명확하지 않습니다. 최소한, 당신이 원하는 것을 제공하십시오. – Makyen

+0

FYI : 가능하면 애드온 SDK 대신 [WebExtensions] (https://developer.mozilla.org/en-US/Add-ons/WebExtensions)를 사용해야합니다. 이 시점에서 WebExtension 기반 확장이 AMO에서 검토 및 나열되도록 허용되고 있습니다 (WebExtensions를 기반으로하지 않는 이미 나열된 확장에 대한 업데이트를 계속 제공 할 수 있음). 비 WebExtensions 기반 확장 기능에 대한 지원은 2017-11-14에 예정된 Firefox 57의 출시 버전에서 제거됩니다. – Makyen

답변

0

이것은 너무 사소한 것으로 바뀌 었습니다. 단순히 참조 URL을 배열에 저장 한 다음 패턴을 작성하여 배열 항목 중 하나와 일치하는 URL을 찾을 때까지 배열 항목을 하나씩 반복합니다.

match 대신 search 기능을 사용했습니다. 작품은 다음과 같습니다 :

//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