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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№117-01-2008 01:48:55

AllSeeingI
Участник
 
Группа: Members
Зарегистрирован: 12-03-2007
Сообщений: 107
UA: Firefox 2.0

(только для крутых) как отследить изменение location.href?

Здравствуйте все ещё раз,

Пытаюсь в своём аддоне проследить все редиректы. HTTP-редиректы (3xx) отслеживаются легко - см. LiveHTTPHeaders. META-редиректы тоже легко находятся - см. RefreshBlocker. Остался последний "вид" редиректов - изменение скриптом свойства location.href.

Можно ли как-нибудь в Мозилле (со стороны аддона) отследить, что пользовательский скрипт (который на загруженной HTML странице) этот location.href меняет?

Заранее спасибо.

P.S. Здесь советуют: "Для этого нужно запускать скрипты в контексте аддона (т.е. вместо родного объекта window порождать свой аналогичный, эмулирующий оригинал через getters/setters)." Чтобы это значило? Автор того поста молчит...

Отсутствует

 

№217-01-2008 05:10:28

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

Re: (только для крутых) как отследить изменение location.href?

я делал примерно так:

Выделить код

Код:

var foo = {

  load: function ()
  {
    document.getElementById("appcontent").addEventListener("load", foo.load_listener, true);
  },

  load_listener: function (event)
  {
    alert(event.originalTarget.location.href);
  }

}

window.addEventListener("load", function () {
  foo.load();
}, false);

Отсутствует

 

№317-01-2008 20:14:11

AllSeeingI
Участник
 
Группа: Members
Зарегистрирован: 12-03-2007
Сообщений: 107
UA: Firefox 2.0

Re: (только для крутых) как отследить изменение location.href?

shutnik: вы просто отслеживаете изменение адреса текущей страницы; я имел ввиду немного другое - как отследить изменение свойства href объекта location при прямом обращении к нему из пользовательского JavaScriptа.

Перефразирую: можно ли отследить из аддона, к каким объектам/свойствам обращается клиентский скрипт?

Отсутствует

 

№417-01-2008 21:56:45

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

Re: (только для крутых) как отследить изменение location.href?

вы просто отслеживаете изменение адреса текущей страницы

тут отслеживается изменение url всех открытых табов

Перефразирую: можно ли отследить из аддона, к каким объектам/свойствам обращается клиентский скрипт?

думаю, нет. по крайней мере, я абсолютно не представляю себе, как такое можно реализовать

Отсутствует

 

№517-01-2008 23:59:03

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 2.0

Re: (только для крутых) как отследить изменение location.href?

Можно попробовать что-нибудь вроде:

Выделить код

Код:

var brs = getBrowser().browsers;
for(var i = 0; i < brs.length; i++) {
	var br = brs[i]; // или по добавлению вкладки обращаться к конкретному brs[i]
	br.addEventListener("unload", unloadHandler, true);
	var el = ...; // не помню, что возвращает getBrowser().browsers, скорее всего, массив из <browser>
	el.watch(
		"property", // "href", видимо...
		function(propName, oldVal, newVal) {
			alert(newVal);
			return newVal;
		}
	);
}

В unloadHandler делать
el.unwatch("property");
и
br.removeEventListener("unload", unloadHandler, true);

Либо по добавлению вкладки (DOMNodeInserted ?) запускать цикл с проверкой
for(var i = 0; i < brs.length; i++) {
    if(!br.isInit) {
        br.isInit = true;
        // ...
    }
}
Либо после добавления вкладки узнавать конкретный br


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№618-01-2008 00:33:24

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

Re: (только для крутых) как отследить изменение location.href?

те же яйца, только в профиль

Отсутствует

 

№718-01-2008 16:51:31

AllSeeingI
Участник
 
Группа: Members
Зарегистрирован: 12-03-2007
Сообщений: 107
UA: Firefox 2.0

Re: (только для крутых) как отследить изменение location.href?

Infocatcher: тут ещё такая ерунда: в chrome-режиме (= в аддоне) объект location не имеет функции watch - хотя если смотреть со стороны HTML-страницы, то до location.watch("href", ...) достучаться можно.

Но даже это не поможет, т.к. нужно ещё отслеживать location.refresh(...) например.

Здесь советуют: "Для этого нужно запускать скрипты в контексте аддона (т.е. вместо родного объекта window порождать свой аналогичный, эмулирующий оригинал через getters/setters)." Только вот чтобы это значило? Вытаскивать тексты скрипта из страницы и работать eval'ом?

Отредактировано AllSeeingI (18-01-2008 16:52:54)

Отсутствует

 

Board footer

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