0

지금 크롬 확장 프로그램을 개발 중입니다. 그것의 목적을 제공하지만 문제는 콘텐츠 스크립트가 새로운 탭을 열고 사이트를 방문 할 때마다 독자적으로 실행된다는 것입니다. 문제는 콘텐츠 스크립트에 경고가 있다는 것입니다. & 새 사이트를 방문 할 때 경고가 발생하면 성가신 느낌이 들기 시작합니다.콘텐츠 스크립트가 자동으로로드됩니다.

현재 chrome.tabs.executeScript API를 사용하여 백그라운드 스크립트에서 콘텐츠 스크립트를 실행하고 있습니다. 그러나 나는 새 탭을 열 때마다 & 새 사이트를 방문 할 때 트리거되는 기준이 백그라운드 스크립트에서 충족되지 않았더라도 컨텐츠 스크립트의 코드가 자동으로 실행된다는 사실을 알고있었습니다.

정상적인 동작입니까? 이 모든 크롬 확장이 어떻게 작동할까요? 그렇다면이를 방지 할 수있는 방법이 있습니까? 지금은 컨텐츠 스크립트를 배경 스크립트로 선언했지만 여전히이 문제를 해결하고 싶습니다. 여기

"content_scripts" : [ 
{ 
    "matches" : [ "<all_urls>"], 
    "js": ["raisealert.js"] 
} 
], 


"background": { 
    "scripts": ["background.js"], 
    "persistent": false 
}, 

이 백그라운드 스크립트입니다 - background.js : manifest.json을 - 여기

내 매니페스트입니다

if(condition met) 
    chrome.tabs.executeScript(null, { 
    code: 'var config = ' + JSON.stringify(config) 
    }, function() { 
     chrome.tabs.executeScript(null, {file: 'raisealert.js'}, function() { 
      console.log("Alarm triggered"); 
     }); 
    }); 

그리고 여기에 콘텐츠 스크립트입니다 -

raisealert.js
alert("sample alert raised"); 
+2

매니페스트에 선언하지 마십시오. 설명서에서 볼 수 있듯이 스크립트를 자동으로로드합니다. – wOxxOm

+0

Ahhhh .... 정말 고마워. Dunno가 왜 그 부분을 놓쳤는가. 매니페스트의 확장에있는 모든 스크립트를 선언하는 것이 필수적이라고 생각했습니다. 답변으로 의견을 기재하면 동의 할 것입니다. 고마워요 @ wOxxOm – Piyush

답변

0

프로그래밍 방식으로 content_script를 자동으로 불러올 수 있습니다. 매니페스트의 content_scripts 섹션에서

모든 URL에 대해이 작업을 수행하거나 스크립트에서로드해야하는 상당히 세부적인 URL 패턴을 정의 할 수 있습니다. Manifest 주사를 참조하십시오

URL 이외의 기준에 조건부로 스크립트를 주입하려면 programmatic injection을 사용할 수 있습니다. 이는 페이지의 내용과 같은 기준 또는 누군가 브라우저 조치 버튼을 누르거나 정의한 오른쪽 클릭 컨텍스트 메뉴 옵션을 선택합니다.

프로그램 주사는 종종 chrome.tabs.onupdated 수신기를 사용하여 특정 URL이나 콘텐츠를 확인한 다음 삽입할지 여부를 결정합니다.

확장 프로그램이 누군가라면 누구나 일 수 있습니다. 페이지에서 사용하고 싶다면 일반적으로 사용자의 고의적 인 행동 (예 : 사용자)에 따라 삽입하는 것이 가장 좋습니다. 귀하의 경우, 말하듯이,로드되는 모든 탭과 페이지에 대해 경고하는 것은 귀찮습니다 (삼가 서 말함).

스크립트에 눈에 띄지 않는 불편 함이 없더라도 페이지에 자동으로 영향을주지 않으면 스크립트가 자동으로 모든 페이지에로드되는 것이 좋습니다.

특정 사이트에서 작동하도록 설계된 경우 매니페스트를 통해 적절한 URL 패턴 필터를 주입하는 것이 가장 좋은 경우가 많습니다.