2014-10-04 6 views
2

나는 파이어 폭스 SDK의 부가 기능을 사용하여 활성 탭에 일부 스크립트를 추가하고 있습니다에 스크립트를 추가내용 개인 정보 보호 정책은, DOM

// main.js 
tabs.activeTab.attach({ 
    contentScriptFile: [data.url("js/loader.js") ] 
}); 

을 거부하고 loader.js는 새로운 스크립트를 생성 새 웹 사이트에 counter.js과 같은 새 스크립트 파일을 추가합니다. 로더를 실행해도 문제가 없지만 웹 사이트의 콘텐츠 개인 정보 취급 방침에 counter.js가 추가되지 않습니다. 여기에 오류가 있습니다 :

Content Security Policy: The page's settings blocked the loading of a resource at http://example.com/counter.js ("default-src http://www.pinterest.com:80 https://*.pinterest.com:443 https://*.pinimg.com:443 http://*.pinterest.com:80 http://*.pinimg.com:80 http://*.google.com:80 http://connect.facebook.net:80 http://*.google-analytics.com:80 https://*.facebook.com:443 http://*.facebook.com:80 http://www.googleadservices.com:80 http://googleads.g.doubleclick.net:80 http://*.tiles.mapbox.com:80 http://*.4sqi.net:80 http://*.online-metrix.net:80 http://akwww.polyvorecdn.com:80 https://www.polyvore.com:443 'unsafe-inline' 'unsafe-eval'"). 

Chrome 확장 프로그램에 대해이 작업을 수행했으며 가능합니다. 하지만 질문은 Firefx SDK addon으로 스크립트를 추가하는 방법입니까?
미리 감사드립니다.

+0

어쩌면 Firefox와 Chrome은 페이지 정책을 Firefox와 달리 "아니오"라고 가정하여 해석합니다. – Pointy

+1

@ Pointy 어쩌면,하지만 나는 길을 찾아야 해! – Reyraa

+0

스크립트를 어떻게 추가하고 있으며 어떤 URL을 사용하고 있는지 확인할 수 있습니까? – willlma

답변

2

특정 URL이있는 페이지에만 스크립트를 첨부하려면 탭에 첨부하는 것보다 PageMod을 사용하는 것이 좋습니다. 대부분의 코드를보고 가장 좋은 답변을 제공하려는 의도에 대해 조금 알고 있으면 유용 할 수 있지만, PageMod이 원하는 것이 아닌 경우 여기에 몇 가지 시나리오가 있습니다.

여기에는 두 가지 방법이 있습니다. 내가 할 것 하나는 단순히 즉시 두 스크립트를 첨부과 같이하는 것입니다

main.js

tabs.activeTab.attach({ 
    contentScriptFile: [data.url("js/loader.js"), data.url("js/counter.js") ] 
}); 

counter.js

var i = 0; 
function count() { 
    i++; 
} 

loader.js

if (titleIsValid() && urlIsValid()) { 
    count(); 
} 

모든 파일이 로컬에 저장되므로 많은 페이지에 많은 JS 파일을 첨부하는 것에 대해 너무 걱정하지 않아도됩니다. 코드를 자동으로 실행하지 않도록 count.js을 구성하면됩니다. 당신이 정말로 그 조건이 적용하는 경우에만 JS 파일을 첨부 할 경우


, 당신은이 작업을 수행 할 수 있습니다

main.js

var worker = tabs.activeTab.attach({ 
    contentScriptFile: data.url("js/loader.js") 
}); 

worker.port.on('attachCounter', function() { 
    worker.tab.attach({ 
    contentScriptFile: (data.url("js/counter.js") 
    }); 
}); 

loader.js

if (titleIsValid() && urlIsValid()) { 
    self.port.emit('attachCounter'); 
} 

이 페이지에 스크립트를 첨부 이유는 페이지 (그리고 파이어 폭스가 안전하지 않은 당신을 말하고 정확한 이유)에 이미있는 페이지 스크립트와 상호 작용하는 경우 전자에 대한 communicating between content scripts and main scripts from tab/attach


, 다음에 대한 interacting with page scripts를 참조하십시오.

+0

감사합니다. @willlma, 전에 이런 방법을 모두 시험해 보았습니다. 북마크로 작동하는 로더 및 카운터 스크립트를 작성 했으므로이 정책에 대해 알지 못했기 때문에 사용할 수 없습니다. 나는 그 스크립트에 변화를주지 않았다고 생각한다. – Reyraa

관련 문제