2010-10-11 41 views

回答

1

看起来好像没有直接的解决方案,如果有人感兴趣,这就是我最终做的。

定期从弹出窗口中ping背景页面,并且如果在某个时间段内未收到ping页面,则会触发所需的操作。工程就像一个定时炸弹:)

在后台页面:

var timeoutId = 0; 
function popupPing() { 
    if(timeoutId != 0) { 
     clearTimeout(timeoutId); 
    } 

    timeoutId = setTimeout(function() { 
     popupClosed(); 
     timeoutId = 0; 
    }, 1000); 
} 

function popupClosed() { 
    //... 
} 

在弹出:

ping(); 
function ping() { 
    chrome.extension.getBackgroundPage().popupPing(); 
    setTimeout(ping, 500); 
} 

(注意,弹出坪比背景页 “触发” 时间快2倍)

+2

虽然我真的希望有一个更好的答案(如果没有,我们应该提交一个bug),这是一个很酷的黑客。一种死人的开关:http://en.wikipedia.org/wiki/Dead_man's_switch – npdoty 2010-10-11 23:27:51