간단한 Web Extension을 작성하려고합니다. 현재 다양한 튜토리얼을 따르고 아키텍처를 이해하려고합니다.웹 확장 프로그램에서 명시 적으로 콘텐츠 스크립트를로드해야합니까?
특정 탭과의 상호 작용은 웹 사이트의 소스 코드에 삽입되는 content_scripts로 수행됩니다. content_scripts가 자동으로로드하는 것처럼 그것은 나에게 보인다 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts
이 MDN에 tutorial가 만드는이 더욱 명확 :
이 스크립트에 주어진 패턴과 일치하는 페이지에로드됩니다 content_scripts manifest.json 키. 스크립트는 페이지 자체가로드하는 스크립트와 마찬가지로 문서에 직접 액세스 할 수 있습니다 ( ).
내 확장 기능은 모든 텍스트 선택에 상황에 맞는 메뉴를 제공합니다. 출발점으로 크롬에 유용한 샘플 확장을 발견했습니다. 여기에서 찾을 수 있습니다 https://developers.chrome.com/extensions/samples, 그것은 "말하기 선택"이라고합니다
이 확장 기능은 tts 엔진을 사용하여 선택한 텍스트를 읽는 중입니다. 하지만 소스 코드의 한 부분은 혼란 스럽습니다. content_script를 탭에서 실행하는 명시적인 기능이 있습니다. 내가 볼 수있는, 지금까지
function loadContentScriptInAllTabs() {
chrome.windows.getAll({'populate': true}, function(windows) {
for (var i = 0; i < windows.length; i++) {
var tabs = windows[i].tabs;
for (var j = 0; j < tabs.length; j++) {
chrome.tabs.executeScript(
tabs[j].id,
{file: 'keycodes.js', allFrames: true});
chrome.tabs.executeScript(
tabs[j].id,
{file: 'content_script.js', allFrames: true});
}
}
});
}
을 브라우저가 시작되면 코드가 즉시 실행 :이 코드는 자신의 배경 스크립트 중 하나에 초기화() 함수의 일부로 실행됩니다. 그렇게 중복되지 않습니까?
여기의 content_script 실행주의를 기울여야한다 이들의 manifest.json은 관련 코드입니다 :
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"all_frames": true,
"js": [
"keycodes.js",
"content_script.js"
]
}
],
열려있는 모든 탭에 스크립트를 삽입하는 적절한 방법은 무엇입니까?
빠른 답변 감사드립니다. 이전 답변에 포함시킨 링크가 매우 유용합니다. – lhk