2010-04-06 2 views
0

После поиска в Интернете и поиска много ошибок, я до сих пор не нашел описания проблемы, которая у меня есть.IE показывая скрытый div при определенных обстоятельствах

Первоначальная ситуация является стандартной. У нас есть всплывающая подсказка, которая на самом деле является скрытым div, который будет отображаться при наведении указателя мыши в определенном месте. Div скрыт с отображением: none и содержит таблицу с содержимым. Мы попробовали разные библиотеки для отображения div (scriptaculous и jQuery Cluetip), но эффект тот же.

Проблема: Все в порядке, пока содержимое соответствует ширине моего окна. Но когда я изменяю его размер до тех пор, пока не будет активирована горизонтальная полоса прокрутки, содержимое скрытого div будет показано в конце страницы при активации всплывающей подсказки.

Это действительно странно, как это происходит только в этих помещениях. Когда задействовано более одной всплывающей подсказки, браузер может даже сбой (и под Vista берет всю систему с ним duh).

Я знаю, что это немного сложно объяснить, но я надеюсь, что кто-то хотя бы услышал об этой ошибке и может указать мне в правильном направлении.

+2

Возможно, вам придется опубликовать код. Вам не нужны библиотеки для показа div, вы можете сделать это с помощью простого CSS, поэтому я подозрительный. – NibblyPig

+0

Где находится подсказка DIV в вашем HTML? В середине этого, или в конце? –

+0

Является ли проблема * где * появляется всплывающая подсказка? вы говорите: «содержимое скрытого div будет показано в конце страницы при активации всплывающей подсказки». Разве не отображается div * предполагается *, когда всплывающая подсказка активирована? – Segfault

ответ

0

То, как я сделал свой инструмент, - это использовать видимость скрытой и видимой. Как только мышь выключена, я установил x и y в 0, чтобы вывести всплывающую подсказку из пространства просмотра.

Это работает только в том случае, если позиция установлена ​​в абсолютную.

Edit: Как вы позиционируете подсказку при показе его:

я расположил всплывающую подсказку, изменяя значения CSS из «верха» и «левого».

box.css ("слева, e.pageX + 1);
box.css (" верх», e.pageY + 1);

Где е 'мое событие переменная от:

MouseMove (функция (е) {});

+0

Как вы позиционировали всплывающую подсказку, когда показывали ее? Я думаю, что это был смысл для использования библиотек, чтобы мы могли легко позиционировать его с помощью указателя мыши. – user310148

+0

Я позиционировал всплывающую подсказку, изменяя значения css «сверху» и «слева». Вы можете получить позицию мыши, используя переменную события, которая вызывается в функции. mousemove (функция (e) { box.css ("left", e.pageX + 5); box.css ("top", e.pageY + 1); } – stan

0

Установка свойства width CSS "авто" (определено в W3C standard) в IE приведет к тому, что элемент <div> займет все выделенное ему пространство. Если в элементе <body> не применяется width, это может привести к ширине страниц и миль. Это часто приводит к сбою браузера, в зависимости от операционной системы. Лучший вариант - просто установить его на null.

(Это основано на фактическом кодировании опыта для IE6 и может не обязательно применяться к IE7 +).

Еще одна вещь, о которой следует помнить, заключается в том, что большинство браузеров делают то, что называется «ленивым рендерингом», что означает, что если элемент скрыт на странице, он не будет его отображать. Он даже не признает его существование как потенциально видимый объект, пока он не будет скрыт. Это означает, что вы не представляете, насколько велика эта цель, пока вы ее не откроете. Это может вызвать проблемы, если вы пытаетесь выяснить, как большой будет после того, как вы сделаете его видимым. В основном единственный способ - показать его, прочитать его размер, снова скрыть, а затем продолжить.

+0

Проблема не и бесконечная страница но только содержимое div, отображаемое в конце его. При переключении на другую всплывающую подсказку или div на самом деле браузер может затем сработать. У div нет ширины, но таблица внутри него установлена ​​на 100%. – user310148

Смежные вопросы