2012-12-09 5 views
0

안녕하세요!chrome.browserAction.onClicked behavior를 동적으로 변경하십시오.

나는 웹 페이지의 DOM을 변경하는 간단한 크롬 확장 기능을 가지고 있습니다 (더 정확하게는 주석을 정렬합니다).

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(
     null, {file : "app.js"});                                           
}); 

그래서 내가 확장의 아이콘을 클릭하면 실행 app.js : 나는 아래의 코드를 포함하는 background.js 있습니다.

두 번째 아이콘을 클릭하여 모든 변경 사항을 재설정하고 싶습니다. 이상적으로는 세 번째 아이콘을 클릭하면 페이지가 다시 정렬됩니다. 이 작업을 수행하는 간단한 방법이 있습니까?

사전

+0

두 번째로 아이콘을 클릭하면 페이지를 다시 불러올 수 있습니까? 또는 페이지를 다시로드하지 않고 app.js에서 수행 한 모든 변경 사항을 실행 취소 하시겠습니까? – Emily

+0

@Emily, 주석 트리의 초기 상태를 저장할 수 있으므로 재설정하고 모두 다시로드하는 것이 아니라이를 사용하고 싶습니다. – ownclo

+1

흠, 글로벌 플래그 변수가 있고'browserAction.onClicked' 핸들러에 플래그가 false이면'executeScript'를 호출하고, 플래그가 참이면 주석을 리셋 한 다음 플래그를 토글하면 작동합니다 너를 위해서? 나는 당신의 질문을 오해하고 있습니까? – Emily

답변

1

크롬이 자동으로 페이지의 DOM로했다 app.js 변경 사항을 취소해야 할 방법이 없습니다에 감사합니다,하지만 당신은 app.js 자체 수정을 취소 할 수 있습니다. app.js이 두 번째로 실행 중임을 감지하거나 (주입 된 스크립트의 전역 변수를 your extension's isolated world) 설정하거나 탭 당 스크립트를 한 번 넣고 send a message을 입력하여 페이지를 넣을 상태를 지정하십시오.

콘텐츠 스크립트를 만들지 않고 탭 당 한 번만 스크립트를 삽입하는 것이 힘들어 보이며 이는 activeTab 권한을 사용하지 못하게하므로 app.js을 기억하는 것이 좋습니다. 다른 이유로 주사.

+0

감사합니다. @ 제프리, 글로벌 변수가 나에게 도움이 될 것 같아요. – ownclo

관련 문제