Xpoint
   [напомнить пароль]

Событие по началу загрузки из адресной строки

Метки: [без меток]
2008-01-28 12:41:15 [обр] Shadow[досье]

Добрый день.
Выполняю некоторый функционал по началу загрузки страницы через адресную строку(т.е. переход на новую страницу), использую следующий код:
//Функция отслеживания события по переходу на нов страницу.
const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP;
var myListener =
{
  QueryInterface: function(aIID)
  {
   if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
       aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
       aIID.equals(Components.interfaces.nsISupports))
     return this;
   throw Components.results.NS_NOINTERFACE;
  },

  onStateChange: function(aProgress, aRequest, aFlag, aStatus)
  {
   // If you use myListener for more than one tab/window, use
   // aProgress.DOMWindow to obtain the tab/window which triggers the state change
   if(aFlag & STATE_START)
   {
     // This fires when the load event is initiated
   window.stop();
   alert("preload");
   }
   if(aFlag & STATE_STOP)
   {
     This fires when the load finishes
   alert("afterload!");
   }
   return 0;
  }
}

Вопрос: Как избежать срабатывания события начала загрузки документа при переходе на новую страницу по ссылке?

спустя 4 дня [обр] Владимир Палант(434/4445)[досье]
При загрузке через адресную строку отсутсвует document.referrer — вот по этому принципу и можете отличать. Вот только document.referrer может отсутствовать и в ряде других случаев (в частности, если он отключен в настройках), поэтому лучше смотреть на aProgress.QueryInteface(Components.interfaces.nsIWebNavigation).referringURI. Не проверял, но должно работать.
Powered by POEM™ Engine Copyright © 2002-2005