我正在开发一个Chrome应用程序并且基本上已经完成了,但是我正在向客户的网站添加代码,以确定该应用程序是否安装在chrome上。
为了做到这一点,我需要检查一个文件“manifest.json”是否可供应用程序确定是否已安装。
我正在使用下面的代码,这是我在这里发布的另一个问题:
function detectChromeExtension(extensionId, accesibleResource, callback){
if (typeof(chrome) !== 'undefined'){
var xmlHttp = new XMLHttpRequest(),
testUrl = 'chrome-extension://' +extensionId +'/' +accesibleResource;
xmlHttp.open('HEAD', testUrl, true);
xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlHttp.timeout = 1000;
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && typeof(callback) == 'function') {
if (xmlHttp.status == 200) {
callback.call(this, true);
} else {
callback.call(this, false);
}
}
}
xmlHttp.ontimeout = function() {
if (typeof(callback) == 'function')
callback.call(this, false);
}
xmlHttp.send();
} else {
if (typeof(callback) == 'function')
callback.call(this, false);
}
};
detectChromeExtension('gcjbmhbihobfgpjmfbooldocijijdpig', 'manifest.json', myCallbackFunction);
function myCallbackFunction(extensionExists) {
if (extensionExists){
console.log('Extension present');
} else {
console.log('Extension not present');
}
}
通过检查chrome控制台,我得到以下输出:
拒绝加载chrome-extension://gcjbmhbihobfgpjmfbooldocijijdpig/manifest.json。资源必须列在web_accessible_resources清单键中,以便由扩展名外的页面加载。
所以为了解决这个问题,我试图将“web_accessible_resources”:[“manifest.json”]添加到我的manifest.json中,但它告诉我这行不遵循语法。
这是完整的manifest.json:
{
"name": "Watch TBR",
"version": "1.0",
"manifest_version": 2,
"default_locale": "en",
"description": "Easy access to WatchTBR.com",
"icons": { "128": "icon_128.png", "16": "icon_16.png" },
"app": {
"urls": [
"http://www.watchtbr.com/"
],
"launch": {
"web_url": "http://www.watchtbr.com/"
}
},
"web_accessible_resources": ["manifest.json"],
"permissions":["http://www.watchtbr.com"]
}
非常感谢任何帮助。
答案 0 :(得分:2)
与扩展程序不同,网站无法访问打包应用程序的资源。如果您拥有该网站和该应用,则可以使用Chrome WebStore的inline installation功能,并测试该应用是否与chrome.app.isInstalled
一起安装。
目前,isInstalled
方法仅限于托管应用,但this bug会跟踪打包的应用支持。
如果您不拥有应用程序或只是想共享应用程序的链接(如果已安装)或商店条目(如果未安装),则会有一个功能请求,您可以在{{标记并跟踪进度3}}