Chrome 확장 프로그램 : 모든 페이지로드를 실행합니다.


91

한 페이지가로드 된 후 일부 스크립트를 실행하는 크롬 확장을 만들고 싶습니다.이 로직을 백그라운드 페이지에 구현해야하는지 아니면 다른 곳에서든 구현할 수 있는지 확실하지 않습니다. 여기에 도움을 주시면 대단히 감사하겠습니다.


혹시라도 브라우저에 페이지가로드 된 후 스크립트를 실행해야합니다.
albertosh

@ZloySmiertniy 예, 콘텐츠 스크립트 만 찾아보고 run_at 옵션에 document_end를 입력하고 일치 항목에 있는지 확인하세요. 스크립트가 삽입 될 URL을 지정해야합니다.
albertosh

답변:


92

A로부터 배경 스크립트 당신은들을 수 있습니다 chrome.tabs.onUpdated이벤트와 속성을 확인 changeInfo.status콜백에. 로드 하거나 완료 할 수 있습니다 . 이 경우 완료 , 작업을한다.

예:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete') {

    // do your things

  }
})

탭이 완성 될 때마다 트리거되기 때문에 다음 과 같이 탭이 동형 속성active 에 있는지 확인할 수도 있습니다 .

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {

    // do your things

  }
})

8
Uncaught TypeError: Cannot read property 'onUpdated' of undefined
Green

2
뭐? 이 답변은 2 년 반 전의 것입니다. 이제 모든 것이 변경되었을 것입니다.
fiatjaf

1
특정 URL이 페이지을하는 경우 :if (tab.url.startsWith("https://example.com") == false) return;
나비 KAZ

47

onload페이지 의 이벤트 에서 실행해야하는 경우 ( 즉, 문서 및 모든 자산이로드 된 경우) 추적하려는 각 페이지에 포함 된 콘텐츠 스크립트에 있어야합니다 onload.


14
content_script 매니페스트 내에서 "run_at"를 참조하여 "document_end"에 콘텐츠 스크립트를 삽입하는 것이 좋습니다.run_at: "document_end"
Mohamed Mansour


10

이 코드는 다음을 수행해야합니다.

manifest.json

   {
      "name": "Alert 'hello world!' on page opening",
      "version": "1.0",
      "manifest_version": 2,
      "content_scripts": [
        {
          "matches": [
            "<all_urls>"
          ],
          "js": ["content.js"]
        }
      ]
    }

content.js

alert('Hello world!')

"일치"필드에 regexp를 사용할 수 있습니까?
Bootuz

예, 참조하십시오https://developer.chrome.com/extensions/content_scripts#matchAndGlob
Dean Meehan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.