My first post here =].
I am creating a chrome extension and I am using setTimeout recursively. I noticed that if I set it to 13 seconds, it will work, but if I set it to 14sec +, it will not work.
This is an example that is on my 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'} ] } );
If you reduce this timeout to 1000 * 13, it will work.
This is my 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://*/*" ] }
Any idea what might cause this weirdness? I am testing this in developer mode, BTW.
Thanks in advance!
EDIT
Fixed code:
manifest.json
I added alarms to permissions
background.js
Added this event to listen alarms.create:
chrome.alarms.onAlarm.addListener(function(alarm){ start(); });
Replaced the setTimeout function with the following line
chrome.alarms.create("Start", {periodInMinutes:1});
Hope this helps!