콘텐츠 스크립트 다시 삽입: Chrome 확장 프로그램 업그레이드 또는 설치 후 필요한 단계
P粉066224086
2023-08-24 12:03:01
<p>개발 중인 Chrome 확장 프로그램을 설치하거나 업그레이드한 후 콘텐츠 스크립트(매니페스트에 지정됨)가 다시 삽입되지 않으므로 확장 프로그램이 제대로 작동하려면 페이지를 새로 고쳐야 합니다. 스크립트를 강제로 다시 삽입하는 방법이 있나요? </p>
<p>매니페스트에서 프로그래밍 방식으로 제거한 다음 페이지를 처리하여 배경 페이지에 주입하면 다시 주입할 수 있다고 생각하지만 이는 좋은 해결책이 아닙니다. </p>
<p>일부 데이터가 손실될 수 있으므로 사용자 탭을 자동으로 새로 고치고 싶지 않습니다. Safari는 확장 프로그램이 설치되거나 업그레이드되면 자동으로 모든 페이지를 새로 고칩니다. </p>
페이지를 새로 고치지 않고 콘텐츠 스크립트를 강제로 삽입하는 유일한 방법은 프로그래밍 방식으로 삽입하는 것입니다.
Chrome의 태그 API를 사용하여 모든 태그를 가져오고 여기에 코드를 삽입할 수 있습니다. 예를 들어, 로컬 저장소에 버전 번호를 저장할 수 있고, 백그라운드 페이지의 버전 번호가 오래된 것인지 확인할 때마다(그렇다면) 모든 활성 태그를 가져와 프로그래밍 방식으로 코드를 삽입할 수 있습니다. 확장 프로그램이 업데이트되도록 하는 솔루션입니다.chrome.tabs.query
chrome.tabs.executeScript(tabId, {file: "content_script.js"});
콘텐츠 스크립트가 많은 확장 프로그램이 업그레이드 후에도 계속 제대로 작동하도록 하고 설치 후 즉시 활성화할 수 있는 방법이 있습니다.
설치/업그레이드
설치 방법은 모든 창의 모든 탭을 반복하고 일치하는 URL이 있는 탭에 일부 스크립트를 프로그래밍 방식으로 삽입하는 것입니다.
매니페스트V3
manifest.json:
으아악이러한 호스트 권한은 콘텐츠 스크립트의
matches
와 동일해야 합니다.배경.js:
으아악이것은 단순화된 예이며 프레임을 다루지 않습니다. getAllFrames API를 사용하여 URL을 직접 일치시킬 수 있습니다. 일치 패턴에 대한 설명서를 참조하세요.
매니페스트V2
분명히 매니페스트.json에 선언된 백그라운드 페이지 또는 이벤트 페이지스크립트에서 이 작업을 수행해야 합니다.
으아악배경.js:
으아악역사적으로 흥미로운 사실
고대 Chrome 26 이하에서는 콘텐츠 스크립트가 백그라운드 스크립트에 대한 연결을 복원할 수 있습니다. 이 문제는 2013년http://crbug.com/168263에 수정되었습니다. 이 답변의 이전 버전에서 이 기술의 예를 볼 수 있습니다.