Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.09.2010, 12:14
Интересующийся
Отправить личное сообщение для mouse_web Посмотреть профиль Найти все сообщения от mouse_web
 
Регистрация: 21.07.2009
Сообщений: 10

Непонятное поведение полосы прокрутки в контейнере
Здравствуйте!
Проблема заключается в следующем. Есть контейнер с текстом, ему задан стиль overflow:auto. Текст заведомо больше размера контейнера, поэтому появляется прокрутка. Если прокрутить текст вниз прокруткой и перевести курсор на текст, то прокрутка вернется на самый верх.

В Firefox и IE7 такого не происходит. Все остальные браузеры, включая IE8, некорректно отрабатывают.

Как устранить это досадное недоразумение?
Помогите, пожалуйста!

Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style>
.block { position:absolute; display:none; width:120px; height:100px; overflow:auto; background-color:#fff; border:1px solid #000; }
.block a { display:block; padding:3px; background-color:#fff; }
.block a:hover { background-color:silver; }
</style>
<script>
function open_close(w) {
   document.getElementById('block').style.display = w ? 'block' : 'none';
}
</script>
</head>
<body>

<div id=block class=block onmouseover="open_close(1)" onmouseout="open_close()"><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a><a href="">Ссылка 1</a></div><a href="javascript:open_close(1)">открыть блок</a>

</body>
</html>


События onmouseover и onmouseout обязательны. Когда курсор на контейнере он должен быть инициализирован, когда курсор уходит с контейнера, он должен закрываться.
Ответить с цитированием
  #2 (permalink)  
Старый 24.09.2010, 12:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

События mouseover/mouseout всплывают с внутренних элементов.
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2010, 12:56
Интересующийся
Отправить личное сообщение для mouse_web Посмотреть профиль Найти все сообщения от mouse_web
 
Регистрация: 21.07.2009
Сообщений: 10

Тоесть получается, что с каждого внутреннего элемента происходит инициализация блока open_close(1) и прокрутка поднимается наверх?
Тогда как это устранить?
Ответить с цитированием
  #4 (permalink)  
Старый 24.09.2010, 12:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Проверять источник события.
Ответить с цитированием
  #5 (permalink)  
Старый 24.09.2010, 13:09
Интересующийся
Отправить личное сообщение для mouse_web Посмотреть профиль Найти все сообщения от mouse_web
 
Регистрация: 21.07.2009
Сообщений: 10

А можно по подробнее или ссылочку на пример кода. Не совсем понимаю как это.
Ответить с цитированием
  #6 (permalink)  
Старый 24.09.2010, 13:12
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/tutorial/events...nye-s-sobytiem
Ответить с цитированием
  #7 (permalink)  
Старый 24.09.2010, 16:40
Интересующийся
Отправить личное сообщение для mouse_web Посмотреть профиль Найти все сообщения от mouse_web
 
Регистрация: 21.07.2009
Сообщений: 10

Все же не удается перехватить источник. Т.к. если наводить курсор на полосу прокрутки блока то срабатывают onmouseout и onmouseover, и окно закрывается.
Ответить с цитированием
  #8 (permalink)  
Старый 26.09.2010, 07:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<style type="text/css">
.block { position:absolute; display:none; width:120px; height:100px; overflow:auto; background-color:#fff; border:1px solid #000; }
.block a { display:block; padding:3px; background-color:#fff; }
.block a:hover { background-color:silver; }
</style>
<script type="text/javascript">
function open_close() {
    document.getElementById("block").style.display = "block";
    document.onmousemove = function (a) {
        a = a || window.event;
        a = (a.target || a.srcElement).tagName.toLowerCase();
        if (a == "body" || a == "html") {
            document.getElementById("block").style.display = "none";
            document.onmousemove = null
        }
    }
};
</script>
<title></title>
</head>
<body>
<div id="block" class="block" >
    <a href="">Ссылка 1</a><a href="">Ссылка 1</a>
    <a href="">Ссылка 1</a><a href="">Ссылка 1</a>
    <a href="">Ссылка 1</a><a href="">Ссылка 1</a>
    <a href="">Ссылка 1</a><a href="">Ссылка 1</a>
    <a href="">Ссылка 1</a><a href="">Ссылка 1</a>
    <a href="">Ссылка 1</a><a href="">Ссылка 1</a>
    <a href="">Ссылка 1</a><a href="">Ссылка 1</a>
  </div>
<a href="javascript:open_close()" >открыть блок</a>
</body>
</html>

Последний раз редактировалось рони, 27.09.2010 в 12:28.
Ответить с цитированием
  #9 (permalink)  
Старый 26.09.2010, 13:08
Интересующийся
Отправить личное сообщение для mouse_web Посмотреть профиль Найти все сообщения от mouse_web
 
Регистрация: 21.07.2009
Сообщений: 10

Спасибо! Очень помогло в решении проблемы.
Ответить с цитированием
  #10 (permalink)  
Старый 27.09.2010, 11:55
Аспирант
Отправить личное сообщение для MikhailGirshberg Посмотреть профиль Найти все сообщения от MikhailGirshberg
 
Регистрация: 27.07.2010
Сообщений: 72

Не все браузеры под виндой справились
FF, GC, Opera - без вопросов
IE8 - вообще пример не запустился (возможно, проблема с запуском примеров);
Safari - не работает ссылка "открыть блок"
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Flash плеер на сайт без полосы прокрутки. BK201 Элементы интерфейса 10 13.10.2011 13:46
значение вертикальной полосы прокрутки в >= IE6 Asd Элементы интерфейса 0 22.08.2009 12:14
Непонятное поведение javascript Autosof Общие вопросы Javascript 4 04.09.2008 19:00
Изменение ширины полосы прокрутки Devoto Общие вопросы Javascript 3 07.07.2008 17:01