2013-02-06 2 views
2

url에서 가져온 regexes 목록과 함께 pagemod를 사용하는 Firefox 확장 기능을 작성 중입니다.json에서이 javascript 객체를 어떻게 전달할 수 있습니까?

var pageMod = require("page-mod"); 
var Request = require("request").Request; 
var hosters = Request({ 
    url: "http://foo.bar/foo", 
    onComplete: function (response) { 
    console.log(response.json.urls); 
    var includeHosters = response.json.urls; 
    pageMod.PageMod({ 
     include: includeHosters, 
     contentScriptWhen: "start", 
     contentScript: '', 
     onAttach: function onAttach(worker) { 
     // my code 
     } 
    }); 
    } 
}).get(); 

내 서버의 응답은 다음과 같습니다

{ 
    "urls": [ 
     "/.*foo.*/", 
     "/.*bar.*/" 
    ] 
} 

문제는 그들이 qutoation 표로하지 않을 때 정규 표현식에 만 작동한다는 것이다.

include: [/.*foo.*/, /.*bar.*/], 

THIE이 작동하지 않습니다 :

이 작동

include: ["/.*foo.*/", "/.*bar.*/"], 

JSON은 따옴표로 묶어야 할 문자열이 필요합니다. 나는 그런 배열에서 PHP 작업 및 내 정규 표현식에가하고있는 서버 측에

는 :

<? 
$regexes = array(".*foo.*",".*bar.*"); 
echo json_encode(array("urls" => $regexes)); 

이 파이어 폭스와 함께 작동하지 않을 수있는 출력을 생성합니다.

regexes를 firefox 확장자로 전달하려면 어떻게해야합니까?

Maby 확장면에서 str_repl 항목을 수행해야합니까?

하지만 어떻게? 어떻게 제대로 할 수 있습니까?

답변

2

JSON 형식은 정규식에 대해 아무 것도 정의하지 않으므로 디코딩 후에 작성해야합니다.

var strs = [".*foo.*", ".*bar.*"]; 

그런 다음이 같은 정규식 배열을 만들 수 있습니다 :

는이 구문 분석 배열을 말해봐

var regexs = strs.map(function(v){ return new RegExp(v) }); 

당신이

에로 /와 정규식 문자열을 보내는 것을 선호하는 경우
var strs = ["/.*foo.*/", "/.*bar.*/"]; 

다음 할 수 있습니다

var regexs = strs.map(function(v){ return new RegExp(v.slice(1,-1)) }); 
+4

당신이 내 도시를 방문하는 경우 당신은 가장 멋진 음료와 침대/아침 식사를 무료로 고려해보십시오! –

+2

@ TheSurrican 프로필에서 관련 "위치"필드를 채우면 고려해 보겠습니다.) –

+0

이제 @dystroy; –

관련 문제