Использую sciter и возникла потребность в событии возникающим после загрузки html кода в Element.load() через url
В данный момент не нахожу способа, чтобы понять загрузился ли html код кроме как проверки через select существует ли в DOM загружаемый элемент или ещё нет. Такой вариант не всегда удобен так как иногда неизвестно какой html код подгружается.
Может есть какой-нить скрытый callback у Element.load(url) или может Event который можно поймать после окончания подгрузки?
PS. Про self.ready в курсе и этот вариант не годиться так как загружаемый код это голый html.
Здравствуйте, Antik, Вы писали:
A>Может есть какой-нить скрытый callback у Element.load(url) или может Event который можно поймать после окончания подгрузки?
Здравствуйте, Antik, Вы писали:
A>Приветствую,
A>Использую sciter и возникла потребность в событии возникающим после загрузки html кода в Element.load() через url A>В данный момент не нахожу способа, чтобы понять загрузился ли html код кроме как проверки через select существует ли в DOM загружаемый элемент или ещё нет. Такой вариант не всегда удобен так как иногда неизвестно какой html код подгружается. A>Может есть какой-нить скрытый callback у Element.load(url) или может Event который можно поймать после окончания подгрузки?
А Element здесь это frame или обычный DOM элемент?
Если Element это не frame то можно в класс Element добавить примерно такую функцию:
function Element.loadFx(url,callback)
{
function cb(data,status)
{
if( data instanceof Stream && status == 200)
this.load( data );
else
this.$content(Load failed, status: {status});
callback(this); << !!!!
}
this.request(cb,#get,url);
}
Здравствуйте, c-smile, Вы писали:
CS>А Element здесь это frame или обычный DOM элемент?
Обычный DOM элемент. Для фрейма ведь есть Event.DOCUMENT_COMPLETE. Я думал есть нечто подобное для обычного DOM элемента.
CS>Если Element это не frame то можно в класс Element добавить примерно такую функцию:
CS>
CS>function Element.loadFx(url,callback)
CS> {
CS> function cb(data,status)
CS> {
CS> if( data instanceof Stream && status == 200)
CS> this.load( data );
CS> else
CS> this.$content(Load failed, status: {status});
CS> callback(this); << !!!!
CS> }
CS> this.request(cb,#get,url);
CS> }
CS>
CS>Метод callback будет вызван когда данные приедут.
Спасибо.
А если усложнить задачу?
Нужно поймать момент когда подгруженный html код закончит атачиться к DOM, то есть до события html кода в DOM`е нет, а после уже есть. Нечто вроде Event.DOCUMENT_COMPLETE только для обычного DOM элемента.
Кстати Event.DOCUMENT_COMPLETE в документации нет. Нашёл событие в примере с pager.
A>Кстати Event.DOCUMENT_COMPLETE в документации нет. Нашёл событие в примере с pager.
DOCUMENT_COMPLETE генерируется когда приехал последний ресурс запрошенный документом. Генерируется для <html> nodes (во view или frame).
A>А если усложнить задачу? A>Нужно поймать момент когда подгруженный html код закончит атачиться к DOM, то есть до события html кода в DOM`е нет, а после уже есть. Нечто вроде Event.DOCUMENT_COMPLETE только для обычного DOM элемента.
Пациент, я вас теряю... что-то там с причинно-следственными связями не то...
Короче, вот теб все варианты:
function Element.loadFx(url,cbBeforeDomModification,
cbAfterDomModification,
cbDomReadyAndScreenUpdated )
{
function cb(data,status)
{
if( data !instanceof Stream || status != 200)
return;
cbBeforeDomModification();
this.load( data );
cbAfterDomModification();
view.update();
cbDomReadyAndScreenUpdated();
}
this.request(cb,#get,url);
}