Расширение доступа Chrome Xively

Как я могу получить доступ к Xively Feed через расширение Chrome. Я создаю простое расширение, которое блокирует веб-сайты в зависимости от значения, которое в данный момент отображается в моем фиде Xively. Однако я не уверен, как получить доступ к каналу Xively без HTML, я смотрел на библиотеку XivelyJS, которую я использовал ранее, но на HTML-странице. Однако мое расширение должно быть независимым от HTML.

Ниже приведен код моей попытки использовать XivelyJS, однако я был бы признателен за более простой или лучший метод.

Background.js:

     chrome.webRequest.onBeforeRequest.addListener(
        function(details) { 
        return {cancel: true};


         },
        {urls: ["*://www.facebook.com/*", "*://www.twitter.com/*"]},
        ["blocking"]);



        // Set your API key first  

// Get feed content  
 xively.setKey( "APIKEY" );

function ReadData(){

    var reading = xively.datastream.get ("832936337", "Reading", callback (data));
    console.log(reading);
    console.log(data);
    setTimeout(ReadData,3000);
    }
    ReadData();

manifest.json:

{
  "manifest_version": 2,
  "name": "SiteBlockerFyp",
  "description": "Block Respective Sites",
  "version": "1",

"permissions": [
    "webRequest",
    "webRequestBlocking",
    "*://www.facebook.com/*","*://www.twitter.com/*"

  ],
"content_scripts": [
    {
      "matches": ["*://www.facebook.com/*"],

      "js": ["jquery.min.js", "xivelyjs.min.js"]
    }
  ],

  "background": {"scripts": ["background.js"]}


}

1 ответ

Решение

Обнаружил, что я могу получить доступ к значениям так:

     chrome.webRequest.onBeforeRequest.addListener(
        function(details) { 
        return {cancel: true};
                    console.log(details.url);
         },
        {urls: ["*://www.twitter.com/*"]},
        ["blocking"]);








        // Set your API key first  

// Get feed content  
 xively.setKey( "APIKEY" );
 console.log("XIVELY LOADED");

   var feedID        = 832936337,          // Feed ID  
      datastreamID  = "Reading";       // Datastream ID  
      data = "null";  // Your element on the page
      dataUpdated= "null";  


     console.log("READ ");


    xively.datastream.get (feedID, datastreamID, function ( datastream ) {  

    data = datastream["current_value"];
    console.log(data); 

    xively.datastream.subscribe( feedID, datastreamID, function ( event , datastream_updated ) {  

    dataUpdated = datastream_updated["current_value"] ;  
    console.log(dataUpdated);
    });  

  });  

        chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
   function(tabs){
      console.log(tabs[0].url);
      if (tabs[0].url == "*www.twitter.com*") {
          alert("Twitter");
      }

   }
);

подписка также дала мне обновления, поскольку они произошли. Однако использование background.js в качестве фонового скрипта в манифесте означает, что он не будет проходить по всем страницам, поэтому я все еще пытаюсь понять это, Content-scripts, очевидно, является подходящим вариантом.

{
  "manifest_version": 2,
  "name": "SiteBlockerFyp",
  "description": "Block Respective Sites",
  "version": "1",

"permissions": [
    "webRequest",
    "webRequestBlocking",
    "*://www.twitter.com/*",
"tabs"

  ],



"content_scripts": [
    {
      "matches": ["<all_urls>"],

      "js": ["jquery.min.js", "xivelyjs.min.js", "background.js"]
    }
  ]


}
Другие вопросы по тегам