【问题标题】:Chrome Manifest.json syntax errorChrome Manifest.json 语法错误
【发布时间】:2013-04-15 07:44:36
【问题描述】:

我正在开发一个 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"]
}

非常感谢您对此的任何帮助。

【问题讨论】:

    标签: json google-chrome-app


    【解决方案1】:

    与扩展程序不同,网站无法访问打包应用的资源。如果您同时拥有该网站和该应用程序,则可以使用 Chrome WebStore 的inline installation 功能并测试该应用程序是否使用chrome.app.isInstalled 安装。

    目前,isInstalled 方法仅限于托管应用,但this bug 跟踪打包应用的支持。

    如果您不拥有该应用,或者只是想分享一个指向该应用(如果已安装)或商店条目(如果未安装)的链接,您可以在 @987654323 提出功能请求并跟踪进度@

    【讨论】:

    • 那么 Crackle.com 是如何检测到我没有安装他们的应用并要求我安装的呢?
    • stackoverflow.com/a/9314807/344467 您可以通过查看该站点的 JS 源代码来了解这一点。
    • 这就是 Crackle 的源代码乱码的问题我找不到他们用来拉出那个弹出窗口的 JS 代码。我会试试你发布的链接
    • 根据@sowbug 的评论使用内联安装更新了答案。
    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 2019-04-30
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2023-03-03
    相关资源
    最近更新 更多