찾다

 >  Q&A  >  본문

콘텐츠 스크립트 다시 삽입: Chrome 확장 프로그램 업그레이드 또는 설치 후 필요한 단계

<p>개발 중인 Chrome 확장 프로그램을 설치하거나 업그레이드한 후 콘텐츠 스크립트(매니페스트에 지정됨)가 다시 삽입되지 않으므로 확장 프로그램이 제대로 작동하려면 페이지를 새로 고쳐야 합니다. 스크립트를 강제로 다시 삽입하는 방법이 있나요? </p> <p>매니페스트에서 프로그래밍 방식으로 제거한 다음 페이지를 처리하여 배경 페이지에 주입하면 다시 주입할 수 있다고 생각하지만 이는 좋은 해결책이 아닙니다. </p> <p>일부 데이터가 손실될 수 있으므로 사용자 탭을 자동으로 새로 고치고 싶지 않습니다. Safari는 확장 프로그램이 설치되거나 업그레이드되면 자동으로 모든 페이지를 새로 고칩니다. </p>
P粉066224086P粉066224086460일 전576

모든 응답(2)나는 대답할 것이다

  • P粉807239416

    P粉8072394162023-08-25 11:24:31

    페이지를 새로 고치지 않고 콘텐츠 스크립트를 강제로 삽입하는 유일한 방법은 프로그래밍 방식으로 삽입하는 것입니다.

    Chrome의 태그 API를 사용하여 모든 태그를 가져오고 여기에 코드를 삽입할 수 있습니다. 예를 들어, 로컬 저장소에 버전 번호를 저장할 수 있고, 백그라운드 페이지의 버전 번호가 오래된 것인지 확인할 때마다(그렇다면) 모든 활성 태그를 가져와 프로그래밍 방식으로 코드를 삽입할 수 있습니다. 확장 프로그램이 업데이트되도록 하는 솔루션입니다.

    모든 태그를 얻으려면 다음 코드를 사용하세요:


    chrome.tabs.query

    모든 페이지에 코드를 삽입하세요


    chrome.tabs.executeScript(tabId, {file: "content_script.js"});

    회신하다
    0
  • P粉158473780

    P粉1584737802023-08-25 00:54:45

    콘텐츠 스크립트가 많은 확장 프로그램이 업그레이드 후에도 계속 제대로 작동하도록 하고 설치 후 즉시 활성화할 수 있는 방법이 있습니다.

    설치/업그레이드

    설치 방법은 모든 창의 모든 탭을 반복하고 일치하는 URL이 있는 탭에 일부 스크립트를 프로그래밍 방식으로 삽입하는 것입니다.

    매니페스트V3

    manifest.json:

    으아악

    이러한 호스트 권한은 콘텐츠 스크립트의 matches와 동일해야 합니다.

    배경.js:

    으아악

    이것은 단순화된 예이며 프레임을 다루지 않습니다. getAllFrames API를 사용하여 URL을 직접 일치시킬 수 있습니다. 일치 패턴에 대한 설명서를 참조하세요.

    매니페스트V2

    분명히 매니페스트.json에 선언된 백그라운드 페이지 또는 이벤트 페이지스크립트에서 이 작업을 수행해야 합니다.

    으아악

    배경.js:

    으아악

    역사적으로 흥미로운 사실

    고대 Chrome 26 이하에서는 콘텐츠 스크립트가 백그라운드 스크립트에 대한 연결을 복원할 수 있습니다. 이 문제는 2013년http://crbug.com/168263에 수정되었습니다. 이 답변의 이전 버전에서 이 기술의 예를 볼 수 있습니다.

    회신하다
    0
  • 취소회신하다