Расширение Chrome используется для обновления страниц - PullRequest
2 голосов
/ 16 января 2012

Я пытался разработать расширение для Chrome, которое будет отображать последние 3 новости с футбольного новостного сайта (очевидно, страница не открыта ни на одной вкладке), обновляя его каждые 5 минут.Моя идея состояла в том, чтобы загрузить страницу внутри iframe и, как только страница загрузится, получить доступ к DOM страницы и извлечь только текстовые узлы с новостями.Я пытался разными способами, используя функции ready и load , я пытался следовать этим решениям здесь , но я всегда получаю предупреждения.Мой вопрос: есть ли способ, которым я могу сделать это без проблем с междоменной безопасностью?Есть ли простые примеры, которые я могу использовать?

Ответы [ 2 ]

1 голос
/ 17 января 2012

Вот как вы могли бы сделать это с помощью JQuery (имейте в виду, я не знаю JQuery, просто где-то видел этот подход и думал, что он может работать для вас).
Я положил это во всплывающем окне, и это сработало ....

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script>

function renderNews(newsList){
      $('#news').html('');
      $(newsList).each(function(i,item){
         var link = document.createElement('a');
         $(link).attr('href',item.link);
         $(link).html(item.description);
         $(link).click(function(){
            chrome.tabs.create({url:$(this).attr('href')});
         });

         var linksDate = document.createElement('span');
         //$(linksDate).text(item.date);
         $(linksDate).text(item.day + '-' + item.month + ' ' + item.hour + ':' + item.minute+' - ');

         var listItem = document.createElement('li');
         $(listItem).append(linksDate).append(link);

         $("#news").append(listItem);
       });
}


  function getNews() {
   $.get("http://www.milannews.it/?action=search&section=32", null,  function(data, textStatus)
    {

        if(data) {
        var news=$(data).find(".list").find('li').slice(0,3) ;
        $("#status").text('');

      var newsList=[];
      $(news).each(function(i, item){
       var newsItem={};
       newsItem.description=$(item).find('a').html();
       newsItem.link='http://www.milannews.it/'+$(item).find('a').attr('href');
       newsItem.date=$(item).find('span').first().text();
       newsItem.day=newsItem.date.split(' ')[0].split('.')[0];
       newsItem.month=newsItem.date.split(' ')[0].split('.')[1];
       newsItem.hour=newsItem.date.split(' ')[1].split(':')[0];
       newsItem.minute=newsItem.date.split(' ')[1].split(':')[1];
       newsList[i]=newsItem;
      });
      renderNews(newsList);
      localStorage.setItem('oldNews',JSON.stringify(newsList));
        }
    });
  }

  function onPageLoad(){
   if (localStorage["oldNews"]!=null) renderNews(JSON.parse(localStorage["oldNews"]));
   getNews();
  }
</script>
</head>
<body onload="onPageLoad();" style="width: 700px">
<ul id="news"></ul>
<div id="status">Checking for new news...</div>
</body>
</html>

И не забудьте указать URL-адреса, которые вы получаете с xhr, в части разрешений вашего манифеста ....
http://code.google.com/chrome/extensions/xhr.html

0 голосов
/ 16 января 2012

Используйте xhr для загрузки страницы и используйте jQuery или регулярное выражение для анализа необработанного HTML-кода для данных, которые вы ищете.

Имейте в виду, что сайт назначения может не захотеть, чтобы вы заходили на его сайт таким автоматическим способом. С уважением относитесь к их сайту и ресурсам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...