Chrome 확장 프로그램에서 Gmail의 전역 변수에 액세스 Gmail 확장 프로그램을 사용하려면 보고 있는 현재 메시지에서 전역 변수에 액세스해야 하는 경우가 많습니다. 그러나 이는 콘텐츠 스크립트의 격리된 환경으로 인해 문제가 될 수 있습니다. Gmail 웹페이지에서 GLOBALS 변수를 검색하려면 jQuery.load()를 사용하면 됩니다. 대신 새로운 요소를 삽입하거나 데이터 전송을 위해 이벤트 리스너를 활용합니다.</p> <p><strong>스크립트 요소 삽입</strong></p> <p><script> 요소를 사용하면 페이지 컨텍스트에 외부 스크립트를 로드할 수 있습니다. 그런 다음 이 스크립트는 전역 변수에 액세스하여 확장 프로그램으로 다시 보낼 수 있습니다. 예를 들어 콘텐츠 스크립트(contentscript.js)에서:</p> <pre><code class="javascript">var s = document.createElement('script'); s.src = chrome.extension.getURL('script.js'); (document.head||document.documentElement).appendChild(s); s.onload = function() { s.remove(); };</code></pre> <p>삽입된 스크립트(script.js)에는 다음이 포함됩니다.</p> <pre><code class="javascript">setTimeout(function() { // Send `GLOBALS` to the extension document.dispatchEvent(new CustomEvent('RW759_connectExtension', { detail: GLOBALS })); }, 0);</code></pre> <p><strong>이벤트 리스너 사용</strong></p> <p>또는 이벤트 리스너를 사용하여 페이지와 확장 프로그램 간에 데이터를 전달할 수도 있습니다. 콘텐츠 스크립트는 다음과 같이 삽입된 스크립트에 의해 트리거된 이벤트를 수신합니다.</p> <pre><code class="javascript">// Event listener in contentscript.js document.addEventListener('RW759_connectExtension', function(e) { // e.detail contains the transferred data (GLOBALS) alert(e.detail); });</code></pre> <p>Chrome에서 로드할 수 있도록 매니페스트 파일의 web_accessible_resources 섹션에 script.js를 포함해야 합니다.</p> <p><strong>모범 사례</strong></p> <p>콘텐츠 스크립트의 논리를 최소한으로 유지하고 데이터 처리에 집중하세요. 이를 통해 웹페이지 코드 수정이나 버그로부터 확장 프로그램을 보호하고 콘텐츠 스크립트에서 제공하는 향상된 기능에 액세스할 수 있습니다.</p>