说我的解压缩 Google Chrome扩展程序中包含以下文件:
如何使用image.png
中的Javascript检查my.extension.js
是否存在?
编辑:
我知道(我认为它会起作用)我们可以创建<img>
元素并使用onerror
事件或使用XMLHttpRequest
来检查存在,但我正在寻找一个更好的(?)替代解决方案,如果有的话。
答案 0 :(得分:3)
将my.extension.js
声明为event page或background page。 (Content Scripts将无法使用以下方法,因为chrome.* API provided in content scripts is limited)
使用基于chrome.runtime.getPackageDirectoryEntry
的Xan建议的HTML 5 Filesystem API来访问资源文件,从而可以检查文件是否存在。
<强>的manifest.json 强>:
{
"background": {
"scripts": ["my.extension.js"],
"persistent": false
},
"manifest_version": 2,
"name": "Check Resource Existence",
"version": "1.0",
}
<强> my.extension.js 强>:
filename = "image.png";
chrome.runtime.getPackageDirectoryEntry(function(storageRootEntry) {
fileExists(storageRootEntry, filename, function(isExist) {
if(isExist) {
/* your code here */
}
});
});
function fileExists(storageRootEntry, fileName, callback) {
storageRootEntry.getFile(fileName, {
create: false
}, function() {
callback(true);
}, function() {
callback(false);
});
}
答案 1 :(得分:2)
您可以查看chrome.runtime.getPackageDirectoryEntry
:
chome.runtime.getPackageDirectoryEntry(function callback)
返回包目录的DirectoryEntry。
然后,您就可以在扩展程序中列出文件了。有关示例,请参阅this answer。
那就是说,你的XHR方法也应该有效。你只需要抓住那个错误。