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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№109-07-2008 21:49:19

zencd
Участник
 
Группа: Members
Зарегистрирован: 09-07-2008
Сообщений: 60
UA: K-meleon 1.1

Как отследить останов загрузки страницы?

Вот грузится страница в Firefox 3, и в одно мгновение перестаёт — такое событие мне и нужно отловить (в каждом табе). Остановка может случиться по разным причинам: явная остановка юзером, успешное окончание загрузки, ошибка там сетевая, whatever.

Вот это почти работает:
http://developer.mozilla.org/en/docs/Code_snippets:Progress_Listeners#Example

Но! только активного таба. Для background'ных сообщение STATE_STOP не ловится :-(

Отсутствует

 

№210-07-2008 01:24:08

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

Re: Как отследить останов загрузки страницы?

можно примерно так:

Выделить код

Код:

var appcontent = document.getElementById("appcontent");
appcontent.addEventListener("load", function(){alert(0);}, true);
appcontent.addEventListener("error", function(){alert(1);}, true);

Отсутствует

 

№310-07-2008 02:44:03

zencd
Участник
 
Группа: Members
Зарегистрирован: 09-07-2008
Сообщений: 60
UA: K-meleon 1.1

Re: Как отследить останов загрузки страницы?

Спасибо!

Оказалось что «load» listener получает два/три сообщения на каждый рефреш страницы:
1) нечто с .className == "tab-icon-image" // не знаю класс, к сож.
2) собственно документ
3) снова tab-icon-image

1е событие выстреливает сразу как начинается загрузка
2е выстреливает только если документ был успешно завершён без прерывания
3е выстреливает всегда, в конце обработки загрузки, независимо от того чем было вызвано завершение этой загрузки

А раньше я eventTarget фильтровал по классу HTMLDocument, вот и не получал эти интересные данные.

Хорошо бы ещё без особых хаков отличать последний tab-icon-image от остальных…

Отредактировано zencd (10-07-2008 03:17:54)

Отсутствует

 

№410-07-2008 03:50:35

zencd
Участник
 
Группа: Members
Зарегистрирован: 09-07-2008
Сообщений: 60
UA: K-meleon 1.1

Re: Как отследить останов загрузки страницы?

UPD: в случае event.originalTarget.className == "tab-icon-image",
event.originalTarget.ownerDocument — это какой-то «другой» документ, не HTML, очевидно (и логично что) это часть браузера.

А мне нужно получить именно HTML doc из этого события (если следовать этим путём, tab-icon-image, а других я не вижу).

Отредактировано zencd (10-07-2008 03:51:29)

Отсутствует

 

№510-07-2008 10:40:47

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

Re: Как отследить останов загрузки страницы?

там видимо грузится помимо основного документа ещё какие-нибудь, допустим, в iframe.
у меня обработчик на load начинаются так:

Выделить код

Код:

load_listener : function (event)
	{
		var doc = event.originalTarget;
		var href = doc.location;
		if(!href)
			return;
		href = href.href;
		if(!href || ["http://", "https://"].indexOf(doc.location.protocol) == -1)
			return;
		var win = doc.defaultView;
		if(win.parent != win)
			return;
		// alert(win.contentDocument.title);
	},

Отсутствует

 

№610-07-2008 15:14:29

zencd
Участник
 
Группа: Members
Зарегистрирован: 09-07-2008
Сообщений: 60
UA: Firefox 3.0

Re: Как отследить останов загрузки страницы?

К сож. если фильтровать событие «load» по http-документу, мы не получим это событие когда юзер нажмёт «Stop» и остановит загрузку.

А если пропускать события с (event.originalTarget.className == "tab-icon-image"), событие это ловится, но зато непонятно что с ним делать. Разве что искать активный таб активного окна… но это чревато ошибками.

Кстати фреймов у меня нет, очень простой документ, на котором проверяю. Это какие-то xul'овские внутренности грузятся.

Отсутствует

 

№710-07-2008 16:00:26

zencd
Участник
 
Группа: Members
Зарегистрирован: 09-07-2008
Сообщений: 60
UA: K-meleon 1.1

Re: Как отследить останов загрузки страницы?

В принципе вопрос можно считать решённым:

Выделить код

Код:

function on_load(event) {
	if("tab-icon-image" == event.originalTarget.className) {
		var doc = gBrowser.selectedBrowser.contentDocument
		alert(doc.location)
	}
}

Другое дело что вызывается этот обработчик два-три раза на каждую страницу :-)). Но в моём конкретном случае немного лишней работы приемлимо.

Отредактировано zencd (10-07-2008 16:17:08)

Отсутствует

 

Board footer

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