2013-05-13 4 views
0

배경 페이지 (background.html)로 관리되는 Chrome 확장 프로그램에 알림 기능이 있습니다 이 페이지는 기본적으로 이전 타이머를 삭제 한 setNotificationDelay() 함수를 호출합니다. setTimeOut크롬 확장의 setTimeOut 범위

function setNotificationDelay() { 
    clearNotificationTimer(); 
    newDelay = getNotificationDelay() 
    notificationTimer = setTimeout(showNotification, newDelay); 
    } 
} 

은 또한 알림 시간의 구성을 허용하는 options.html 페이지가 있습니다. 구성을 수정할 때 백그라운드 타임 아웃을 수정하고 싶지만 옵션 페이지에서 setNotificationDelay()를 호출하면 작동하지 않으며 타이머의 범위가 상위 페이지에 연결되어 있기 때문에 가정합니다.

옵션 페이지를 열면 시간 초과가 발생하고 닫으면 알림이 표시되지 않습니다.

이 타이머를 백그라운드 페이지에 추가하려면 어떻게해야합니까? 더 좋은 방법이 있나요?

감사합니다.

편집 : chrome.extension는 배경 페이지의 윈도우 객체를 반환 내의 getBackground 페이지 방법이 다음 options.html 페이지가 열려있는 동안

function setNotificationDelay() { 
    clearNotificationTimer(); 
    newDelay = getNotificationDelay() 
    notificationTimer = chrome.extension.getBackgroundPage().setTimeout(showNotification, newDelay); 
    } 
} 

답변

2

options.js는 활성화, 그리고 난 당신이하지 않는 가정 알림을 기다리는 동안 페이지를 열린 채로두기를 원합니다. 당신이 원하는 것은 (나는) background.js에 알림을 설정하는 것입니다 (background.jsoptions.js은 모두 동일한 문자열 변수 localStorage.yourNotificationDelay에 액세스 함). 조심하는

한 것은 당신이 일어나지 않을 것입니다 배경 페이지, 몇 초 이상 통지 대신 event pages을 사용하는 경우 크롬 배경 페이지를 언로드하기 때문이다. 이 경우 alarms 대신 사용해야합니다.

편집 : 편집하면 내가 당신을 이해하지 못한다고 생각합니다. 아마도 타이머가 실행되는 동안 사용자가 간격을 변경하려고 할 것입니까? 그런 다음 messagebackground.jsnewDelay으로 보내고 setNotificationDelay()으로 전화하는 것이 좋습니다.

관련 문제