我有以下说明性扩展,如果用户访问“www.ru”,它将终止选项卡进程并重新加载页面:
manifest.json
{
"manifest_version" : 2,
"name" : "test extension",
"version" : "1.0.0",
"permissions" : [ "tabs", "experimental" ],
"background" : { "scripts" : [ "extension.js" ], "persistent" : true }
}
extension.js
function reload() {
chrome.tabs.query( {}, function( tabs ) {
for( var i = 0; i < tabs.length; i ++ ) {
if( tabs[ i ].url.match( /www\.ru/ ) ) {
window.setTimeout( function() {
chrome.experimental.processes.getProcessIdForTab( tabs[ i ].id, function( id ) {
chrome.experimental.processes.terminate( id );
})
}, 5000);
window.setTimeout( function() {
chrome.tabs.reload( tabs[ i ].id );
}, 10000);
return;
}
}
window.setTimeout( reload, 1000 );
});
}
window.setTimeout( reload, 1000 );
我启动最新的 google chrome(26.0.1410.64 m 32 位,用于几分钟前从 chrome.google.com 下载的 windows),创建第二个 chrome 用户,切换到该用户,安装扩展程序,打开“www.ru”,切换到第一个用户- 10 秒后,chrome 强行将我切换回第二个用户,以演示标签重新加载!
只有 process kill + tab reload 会产生这种奇怪的行为(它们之间的暂停可以是任意长度)。如果终止或重新加载部分被注释掉,则执行相应的操作,但用户帐户被更新。
是我面临的一些 chrome 错误还是记录在案的行为?是否可以防止强制切换帐户?对我来说,在某些事情中被打断只是为了显示网络爬虫帐户上的某些网络爬虫扩展发现没有响应的选项卡并重新加载它,这让我非常不愉快:(。