Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№113-10-2008 18:46:42

Elexander
Участник
 
Группа: Members
Зарегистрирован: 06-10-2008
Сообщений: 54
UA: Opera 9.6

Получить историю посещений веб-страниц

Здравствуйте.
Подскажите, пожалуйста, как получить список страниц, которые открывались в браузере за последние n-дней. Я нашел информацию о интерфейсе nsISHistory. И пробовал получить список вот так:

Выделить код

Код:

var history = Components.classes["@mozilla.org/browser/shistory;1"]
		.getService(Components.interfaces.nsISHistory);
var enum = history.SHistoryEnumerator;
var item;
while (enum.hasMoreElements())
{
	item = enum.getNext();
	alert(item.URI.spec);
}
alert('count: ' + history.count + '  index: ' + history.index);

Но, энумератор пуст, а свойства count и index равны соответственно 0 и -1.
В всех же остальных интерфейсах, явно связанных с историей посещений (nsIBrowserHistory, nsIDOMHistory, nsIGlobalHistory, nsISHistoryInternal), нужных свойств и методов я не нашел.
Буду благодарен за помощь.

Отредактировано Elexander (13-10-2008 18:59:15)

Отсутствует

 

№213-10-2008 19:21:47

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 3.0

Re: Получить историю посещений веб-страниц

подозреваю, что shistory - это session history для ассоциированного с ним xul browser, например.
похоже, здесь описано то, что вам нужно

Отсутствует

 

№314-10-2008 12:54:04

Elexander
Участник
 
Группа: Members
Зарегистрирован: 06-10-2008
Сообщений: 54
UA: Opera 9.6

Re: Получить историю посещений веб-страниц

Shutnik пишет

подозреваю, что shistory - это session history для ассоциированного с ним xul browser, например.
похоже, здесь описано то, что вам нужно

Спасибо за ответ. Не знал, что это сесионная история посещений. Но интерфейс nsINavHistoryService, о котором идет речь в приведенной вами статье, недоступен в Firefox 2. Я определил это используя расширение XPCOM Component Viewer. В списке доступных интерфейсов его не оказалось. А при попытке получить компонент, его реализующий:

Выделить код

Код:

var historyService = Components.classes["@mozilla.org/browser/nav-history-service;1"]
                               .getService(Components.interfaces.nsINavHistoryService);

появляется ошибка:

Выделить код

Код:

TypeError: Components.classes['@mozilla.org/browser/nav-history-service;1'] has no properties

Отсутствует

 

№420-10-2008 18:01:50

Elexander
Участник
 
Группа: Members
Зарегистрирован: 06-10-2008
Сообщений: 54
UA: Opera 9.6

Re: Получить историю посещений веб-страниц

Привожу пример кода, который вытаскивает историю с датами из Firefox 2. (Может кому-то пригодится).

Выделить код

Код:

var rdfSrv = Components.classes["@mozilla.org/rdf/rdf-service;1"]
   .getService(Components.interfaces.nsIRDFService);
var history = rdfSrv.GetDataSourceBlocking("rdf:history");
var enum = history.GetAllResources();
while (enum.hasMoreElements())
{
   var item = enum.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
   var date = rdfSrv.GetResource("http://home.netscape.com/NC-rdf#Date");
   date = history.GetTarget(item, date, true);
   date =  date.QueryInterface(Components.interfaces.nsIRDFDate).Value;
   var url = rdfSrv.GetResource("http://home.netscape.com/NC-rdf#URL");
   url = history.GetTarget(item, url, true);
   url =  url.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
   var dateObj = new Date();
   dateObj.setTime(date / 1000);
   alert('date: ' + dateObj.toGMTString() + ' url: ' + url);
}

Даты в RDF-формате хранятся в виде количества микросекунд с 1 января 1970. Отрицательные значения представляют время перед той датой; положительные значения представляют время с тех пор. Один день состоит из 86,400,000,000 микросекунд. Для преобразования в формат обьекта Date JavaScript нужно разделить величину на тысячу, так как обьект Date хранит время в миллисекундах.

Отредактировано Elexander (20-10-2008 18:03:06)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]