2013-04-15 3 views
0

Я работаю над хром-приложением и его в основном выполнил, однако я добавляю код на сайт моего клиента, чтобы определить, установлено ли приложение на хром или нет.Ошибка синтаксиса Chrome Manifest.json

Для этого мне нужно проверить наличие файла «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'); 
      } 
     } 

Проверив хромированную консоль я получаю следующий результат:

Лишить груз хромированного расширения: //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"] 
} 

Любая помощь по этому вопросу очень ценится.

ответ

2

В отличие от расширений, веб-сайт не имеет доступа к ресурсам упакованного приложения. Если у вас есть сайт и приложение, вы можете использовать функцию inline installation в Chrome WebStore и проверить, установлено ли приложение с chrome.app.isInstalled.

В настоящее время метод isInstalled ограничен размещенными приложениями, но this bug отслеживает поддержку упакованных приложений.

Если вы не являетесь владельцем приложения или хотите поделиться ссылкой на приложение (если оно установлено) или в запись в хранилище (если оно не установлено), есть запрос функции, который можно запустить и отслеживать прогресс на https://code.google.com/p/chromium/issues/detail?id=161054

+0

Тогда как Crackle.com обнаружил, что у меня нет установленного приложения и попросить меня установить его? –

+1

http://stackoverflow.com/a/9314807/344467 Вы можете увидеть это, посмотрев исходный код JS этого сайта. – sowbug

+0

вот в чем проблема. Источник Crackle - тарабарщина. Я не могу найти код JS, который они используют, чтобы вытащить это всплывающее окно. Я попробую ссылку, которую вы опубликовали –

Смежные вопросы