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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№123-11-2008 22:10:24

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

Выполнение действия после загрузки странички.

Задача, сразу после загрузки странички на активной вкладке начать выполнять некие действия.
Сразу - это десятые доли секунды :)

Используя команду вида:

Выделить код

Код:

function pageSwitched(){
alert("Страничка загружена, продолжаю работать.");
}
getBrowser().addEventListener("load", pageSwitched(), false);

можно проверить состояние странички на момент вызова.
По идее должна вызываться сразу после команды перехода по заданному адресу.
Но если нажать, к примеру F5, а потом запустить проверку - то скажет, что страничка загружена, т.к. это ещё старая страничка и переход не успел начаться. 
Это первая проблема.

Вторая в том что если загрузка новой странички началась то команда по окончании загрузки не выполнится. 

Как это можно решить? Пока есть лишь вариант запуска проверки в цикле, но вдруг есть более интересные варианты? :angel:

Содержимое и адрес странички активной вкладки может и не измениться, при переходе. :whiteflag:

Отсутствует

 

№223-11-2008 23:17:20

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

Re: Выполнение действия после загрузки странички.

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

Отсутствует

 

№324-11-2008 00:23:58

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

Re: Выполнение действия после загрузки странички.

Shutnik пишет

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

Спасибо, Shutnik. Тогда просмотрел тему, но не разобрался. 
Но после того как ткнули носом всё увидел и понял, что это ОНО :)


Правда не получается использовать это нужным образом.

Выделить код

Код:

function my_unload_listener(){ alert("beforeunload");
}

    function my_load_listener (event)
    {
        var doc = event.originalTarget;
        var win = getBrowser().selectedBrowser.contentDocument;
        if(doc == win)
        { //alert("load");
rr=123;
            // активный таб
        }
    }
var rr=0;
function rrr(){
        var appcontent = document.getElementById("appcontent");
        if(!appcontent)
            return;
        appcontent.addEventListener("load", my_load_listener, true);
        appcontent.addEventListener("beforeunload", my_unload_listener, true);
}
loadURI ("forum.mozilla-russia.org", null, null);
rrr();
if(rr==123) alert("Всё сработало верно. Продолжаем работу.");
else alert("Нет!");

Ни разу алерт не выдал, что всё сработало.
И функции my_load_listener и my_unload_listener вызываются каждый раз при переходе, даже если не задействую код, а просто перехожу по ссылкам браузера. Если использую код, то количество их вызывов нарастает (страничка всё таже). Как-нибудь ограничить можно? :)

Отредактировано Орец (24-11-2008 01:11:28)

Отсутствует

 

№424-11-2008 10:35:21

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

Re: Выполнение действия после загрузки странички.

С тем что  я оказывается каждый раз создаю ещё одного слушателя события разобрался. :dumb:

Отсутствует

 

№524-11-2008 10:45:35

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

Re: Выполнение действия после загрузки странички.

Ни разу алерт не выдал, что всё сработало.

это условие проверяется до загрузки таба, его нужно засунуть в my_load_listener

Отсутствует

 

Board footer

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