6

내 첫 번째 게시물 =].크롬 확장 프로그램 setTimeout이 제대로 작동하지 않습니다.

크롬 확장 프로그램을 만들고 있는데 setTimeout을 재귀 적으로 사용하고 있습니다. 13 초까지 설정하면 작동하지만 14 초로 설정하면 작동하지 않습니다.

당신이 * 13 1000이 제한 시간을 줄이면 내 background.js

function start() { 

    var timeout = setTimeout(function() { start(); }, 1000*15); 
    alert('test'); 
} 

chrome.webNavigation.onCompleted.addListener(function(o) { 

    start(); 

    }, { 
     url: [ 
     {urlContains: 'http://www.example.com/in.php'}, 
     {urlContains: 'http://www.example.com/out.php'} 
     ] 
    } 
); 

에 예를 들어, 그것은 작동합니다.

이 내 manifest.json을

{ 
    "name": "Extension", 
    "version": "0.0.7", 
    "manifest_version": 2, 
    "description": "Keeps proxy session alive", 
    "homepage_url": "http://www.example.com", 
    "icons": { 
    "16": "icons/icon16-on.png", 
    "48": "icons/icon48-on.png", 
    "128": "icons/icon128-on.png" 
    }, 
    "default_locale": "en", 
    "background": { 
    "scripts": [ 
     "src/bg/background.js" 
    ], 
    "persistent": false 
    }, 
    "browser_action": { 
    "default_icon": "icons/icon19.png", 
    "default_title": "Example - Off", 
    "default_popup": "" 
    }, 
"permissions": [ 
    "webNavigation", 
    "*://*/*", 
    "https://*/*" 
    ] 
} 

이 oddness의 원인이 될 수 있는지에 대한 어떤 생각? 나는 이것을 개발자 모드에서 테스트하고있다. 사전에

감사합니다!

편집

코드 수정 :

의 manifest.json 내가

background.js에게 권한

추가 된 생 "경보"를 추가

의 이벤트는 alarms.create을 듣 :

chrome.alarms.onAlarm.addListener(function(alarm){ 
    start(); 
}); 

은 아래 라인

chrome.alarms.create("Start", {periodInMinutes:1}); 

이 도움이 희망과의 setTimeout 기능을 대체!

답변

12

일정 기간 동안 사용하지 않으면 자동으로 이벤트 페이지가 일시 중지 될 수 있습니다. 내 컴퓨터에서 onSuspend은 ~ 10 초 후에 호출 된 것 같습니다. 이벤트 페이지가 유휴 상태

되면 짧은 시간 (수 초)의 runtime.onSuspend 이벤트가 전달되는 것을

https://developer.chrome.com/extensions/event_pages#lifetime 노트. 이벤트 페이지는 강제로 언로드되기 전에이 이벤트를 처리하는 데 약간 더 많은 시간이 초 있습니다.

페이지가 실제로 언로드되기 전에 약 13 초가 걸릴 수 있습니다. 따라서 onSuspend에서 정리 시간이 주어집니다. 그런 다음 페이지가 언로드되고 거기에서 시작된 코드는 더 이상 실행되지 않습니다.

https://developer.chrome.com/extensions/event_pages#transitionsetTimeout 대신 이벤트 페이지에 alarms api을 사용합니다.

+0

예! 에 딱 맞다!! 잘 했어! 일단 충분한 평판을 얻으면 나는 이것을 투표 할 것입니다. 고마워. – badcom

관련 문제