Страницы: 1
Вот грузится страница в Firefox 3, и в одно мгновение перестаёт — такое событие мне и нужно отловить (в каждом табе). Остановка может случиться по разным причинам: явная остановка юзером, успешное окончание загрузки, ошибка там сетевая, whatever.
Вот это почти работает:
http://developer.mozilla.org/en/docs/Code_snippets:Progress_Listeners#Example
Но! только активного таба. Для background'ных сообщение STATE_STOP не ловится :-(
Отсутствует
можно примерно так:
var appcontent = document.getElementById("appcontent"); appcontent.addEventListener("load", function(){alert(0);}, true); appcontent.addEventListener("error", function(){alert(1);}, true);
Отсутствует
Спасибо!
Оказалось что «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)
Отсутствует
UPD: в случае event.originalTarget.className == "tab-icon-image",
event.originalTarget.ownerDocument — это какой-то «другой» документ, не HTML, очевидно (и логично что) это часть браузера.
А мне нужно получить именно HTML doc из этого события (если следовать этим путём, tab-icon-image, а других я не вижу).
Отредактировано zencd (10-07-2008 03:51:29)
Отсутствует
там видимо грузится помимо основного документа ещё какие-нибудь, допустим, в 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); },
Отсутствует
К сож. если фильтровать событие «load» по http-документу, мы не получим это событие когда юзер нажмёт «Stop» и остановит загрузку.
А если пропускать события с (event.originalTarget.className == "tab-icon-image"), событие это ловится, но зато непонятно что с ним делать. Разве что искать активный таб активного окна… но это чревато ошибками.
Кстати фреймов у меня нет, очень простой документ, на котором проверяю. Это какие-то xul'овские внутренности грузятся.
Отсутствует
В принципе вопрос можно считать решённым:
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)
Отсутствует
Страницы: 1