1

私はクロムアプリに取り組んでおり、基本的には完了していますが、アプリがクロムに​​インストールされているかどうかを判断するコードを顧客の Web サイトに追加しています。

これを行うには、アプリがインストールされているかどうかを判断するために、ファイル「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"]
}

これに関するヘルプは大歓迎です。

4

1 に答える 1

2

拡張機能とは異なり、Web サイトがパッケージ化されたアプリのリソースにアクセスする方法はありません。サイトとアプリの両方を所有している場合は、Chrome WebStoreのインライン インストールchrome.app.isInstalled機能を使用して、アプリが でインストールされているかどうかをテストできます。

現時点では、このisInstalled方法はホストされたアプリに限定されていますが、このバグはパッケージ化されたアプリのサポートを追跡します。

アプリを所有していない場合、またはアプリ (インストールされている場合) またはストア エントリ (インストールされていない場合) へのリンクを共有したい場合は、https://codeで星を付けて進行状況を追跡できる機能リクエストがあります。 .google.com/p/chromium/issues/detail?id=161054

于 2013-04-15T18:05:22.593 に答える