Re[4]: scroll_to_view
От: c-smile Канада http://terrainformatica.com
Дата: 22.12.07 06:25
Оценка: 19 (2)
Здравствуйте, mad777, Вы писали:

M>Попробовал поставить фокус на body. Сделать это получается только если повесить на него свой behavior.


<body tabindex=0>
  ...
</body>


Любой элемент может быть focusable если у него объявлен tabindex.
scroll_to_view
От: Аноним  
Дата: 20.12.07 17:52
Оценка:
Доброго времени суток!

Не могу заставить scroll_to_view() скроллить.

Сделал простенький примерчик для WinMobile
Загружаю хтмл с парой ссылок, потом несколькими строками текста
(достаточно, чтобы не поместилось на один экран),
потом ставлю якорь <a name="anch"></a>

Дальше выполняю код
using namespace htmlayout;
dom::element root = dom::element::root_element(hWnd);
dom::element anchor_el = root.find_first("a[name=\"anch\"]");
if(anchor_el.is_valid())
{
     anchor_el.scroll_to_view(true);
}


Результат поиска корректный, проверял.
Но скроллинг не срабатывает, документ остается открыт на начале.
В чем может быть трабл?
Re: scroll_to_view
От: mad777 Россия  
Дата: 21.12.07 09:11
Оценка:
Я забыл добавить:
HTMLayoutScrollToView внутри scroll_to_view возвращает HLDOM_OK
Re: scroll_to_view
От: mad777 Россия  
Дата: 21.12.07 16:55
Оценка:
Поигрался еще немного.
На данный момент для меня ситуация выглядит так:

Если я загружаю в HTMLayout хтмлку, в которой в начале документа
стоит ссылка , потом много текста (достаточно, чтобы появился
вертикальный скроллер), потом ссылка в конце документа, то когда я
ищу элемент dom для нижней ссылки по root.find_first и на найденном
элементе делаю anchor_el.scroll_to_view, то скролл выполняется
на верхнюю ссылку.

Если же выполнить скролл два раза подряд либо полностью повторить поиск,
то тогда скроллится на нижнюю ссылку, как и должно быть. Попробовал то же
самое с парой других тегов — такого не происходит. Только с <a>.
Вопрос — у всех так?

И заодно возник еще один вопрос — когда загружаю хтмл с ссылкой или несколькими
ссылками, фокус устанавливается на первую ссылку. Если она в конце документа, то
документ скроллится на нее. Я чего-то не так делаю или так и должно быть? И как от
этого правильно избавиться?
Re[2]: scroll_to_view
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 21.12.07 17:07
Оценка:
Здравствуйте, mad777, Вы писали:

M>И заодно возник еще один вопрос — когда загружаю хтмл с ссылкой или несколькими

M>ссылками, фокус устанавливается на первую ссылку. Если она в конце документа, то
M>документ скроллится на нее. Я чего-то не так делаю или так и должно быть? И как от
M>этого правильно избавиться?

В документе нет других элементов на которые можно установить фокус?
Как я понимаю логику работу, HTMLayout после загрузки документа ищет элемент с меньшим значением атрибута tabindex и ставит фокус на него (если индексы не проставляются пользователем, то библиотека расставляет их самостоятельно в порядке в котором элементы встречаются в DOM дереве). Если элемент находится далеко внизу, то соответственно скроллится документ.

Я в похожей ситуации руками устанавливал фокус на body (если память не изменяет).
Хорошо там, где мы есть! :)
Re[3]: scroll_to_view
От: mad777 Россия  
Дата: 21.12.07 18:59
Оценка:
Здравствуйте, ShaggyOwl, Вы писали:

SO>В документе нет других элементов на которые можно установить фокус?

SO>Как я понимаю логику работу, HTMLayout после загрузки документа ищет элемент с меньшим значением атрибута tabindex и ставит фокус на него (если индексы не проставляются пользователем, то библиотека расставляет их самостоятельно в порядке в котором элементы встречаются в DOM дереве). Если элемент находится далеко внизу, то соответственно скроллится документ.

SO>Я в похожей ситуации руками устанавливал фокус на body (если память не изменяет).


Попробовал поставить фокус на body. Сделать это получается только если повесить на него свой behavior. Собственно, при этом проблема вообще снимается, фокус сразу устанавливается на body. Но на мой взгяд довольно странно производить такие действия, чтобы получить картину, ожидаемую по умолчанию — загрузился документ, остался открытым на начале, если не было scroll_to_view и т.п.
Re[4]: scroll_to_view
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 21.12.07 19:17
Оценка:
Здравствуйте, mad777, Вы писали:

M>Попробовал поставить фокус на body. Сделать это получается только если повесить на него свой behavior. Собственно, при этом проблема вообще снимается, фокус сразу устанавливается на body.

А на html пробовал?

M>Но на мой взгяд довольно странно производить такие действия, чтобы получить картину, ожидаемую по умолчанию — загрузился документ, остался открытым на начале, если не было scroll_to_view и т.п.

С одной стороны да, с другой фокус тоже куда-то вешать надо.
Хорошо там, где мы есть! :)
Re[5]: scroll_to_view
От: mad777 Россия  
Дата: 24.12.07 14:10
Оценка:
Здравствуйте, c-smile, Вы писали:

CS><body tabindex=0>
CS>  ...
CS></body>


CS>Любой элемент может быть focusable если у него объявлен tabindex.


А в browse.exe это именно так сделано?
И еще один вопрос — а когда планируется обновить мобильную версию?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.