Chrome Downloads.search查询error属性异常及多条件查询问题
Chrome Downloads API 多错误值筛选解决方案
问题分析
你提到的chrome.downloads.search方法中,error字段仅支持单个错误值匹配,无法直接通过重复error键的对象实现多值筛选——JavaScript对象里重复的键会被覆盖,你写的代码最终只会保留最后一个error值(NETWORK_TIMEOUT),自然达不到预期效果。另外单独使用error查询返回所有结果,大概率是当前环境中下载项的状态或错误值刚好符合匹配条件,但核心问题还是多错误值的筛选方式不对。
可行解决方案
由于API本身不支持error的多值匹配,我们需要先查询所有状态为interrupted的下载项,再在结果中手动过滤出符合目标网络错误的条目:
方法1:使用异步函数(推荐)
async function getNetworkInterruptedDownloads() { // 先获取所有状态为interrupted的下载项 const allInterrupted = await chrome.downloads.search({ state: 'interrupted' }); // 定义需要匹配的网络错误列表 const networkErrors = [ 'NETWORK_DISCONNECTED', 'NETWORK_FAILED', 'NETWORK_TIMEOUT' ]; // 过滤出符合条件的项 return allInterrupted.filter(item => networkErrors.includes(item.error)); } // 调用示例 getNetworkInterruptedDownloads().then(downloads => { console.log('符合条件的下载项:', downloads); });
方法2:使用回调函数
chrome.downloads.search({ state: 'interrupted' }, function(allInterrupted) { const networkErrors = [ 'NETWORK_DISCONNECTED', 'NETWORK_FAILED', 'NETWORK_TIMEOUT' ]; const targetDownloads = allInterrupted.filter(item => networkErrors.includes(item.error)); console.log('符合条件的下载项:', targetDownloads); });
额外说明
确保你的扩展已声明downloads权限,在manifest.json中配置:
{ "permissions": ["downloads"] }
内容的提问来源于stack exchange,提问作者user2784466
相关产品推荐
相关产品推荐

