困难访问对象属性在Javascript从Chrome扩展下载API
Difficulty accessing object property in Javascript from Chrome Extension Downloads API
下面的代码是chrome下载API从这里
dictionary StringDelta {
DOMString? previous;
DOMString? current;
};
[inline_doc] dictionary DownloadDelta {
//other things
StringDelta? error; // what i'm trying to access
}
我试图使一个chrome扩展,当我试图访问'downloadDelta。如下所示,我得到"未定义"。
chrome.downloads.onChanged.addListener(function(downloadDelta) {
console.log(downloadDelta.error);
}
);
我不知道那个问号或DOMString是什么意思。文档中说'error'是可选的
IDL中的问号表示所有这些东西都是可选的,就像您链接到的API文档一样。
例如,DownloadDelta.error
是undefined
,除非产生它的更改实际上是一个中断,该中断将DownloadItem.error
更改为downloadDelta.id
所指示的DownloadItem
。一次下载可能有很多更改事件,但永远不会设置错误,或者在DownloadItem
状态的许多更改中只设置一次错误。
一个DOMString
是一个正常的(文档对象模型)字符串,这意味着字符串是适合使用你的扩展在其JavaScript/HTML/CSS上下文中。实现可以访问自己语言和库中的许多其他类型的string,这些类型可能是不兼容的。
由于DownloadDelta
中唯一永久的是相关DownloadItem
的id
,因此您的onChange回调通常有两种操作:
-
注意
DownloadDelta
中特定的东西,如错误,只有当你需要在它们改变时对它们做出一次反应,而不需要在这样做时考虑项目的其余下载状态 -
调用
chrome.downloads.search({'id':downloadDelta.id}, callback2)
从callback2
检查downloadItem
的整个状态,并采取您希望依赖于downloadItem
状态的多个方面的操作,这些方面可能会独立变化(因此在独立的DownloadDelta
s中)。
当然,只有当增量表明DownloadItem
可能已经潜在地转换为准备好执行您想要执行的操作时,您才可以通过检查增量来有选择地使用callback2设置搜索,从而将它们组合在一起。
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 从选项页面更新chrome扩展清单权限
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- Chrome扩展:遍历不同的页面并收集数据
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 可以从Chrome扩展修改窗口对象吗
- 从popup.js|Chrome扩展访问DOM
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 在Chrome扩展内部输出Google API调用
- 检查是否存在使用chrome扩展的javascript库
- 从Chrome扩展访问Google Cloud SQL数据库
- Chrome扩展,Chrome.tabs.query的结果未定义
- 为tweet构建chrome扩展
- 在chrome扩展中使用AJAX获取目录中的文件数