var osy = element.offsetY;
Нет такого свойства как offsetY
. Вы можете думать о offsetTop
. Однако обратите внимание, что значения offsetLeft
/ Top
относятся к offsetParent
, а не к странице. Если вам нужны координаты относительно страницы, вам нужно перебрать offsetParents или, так как вы, кажется, включаете jQuery, вызвать его offset функцию, которая делает это просто:
var offset= $(element).offset();
var osx= offset[0], osy= offset[1];
var bottom = osy + element.height ();
element
- это объект DOM HTMLDivElement, а не объект-обертка jQuery, поэтому он не имеет метода height()
. Либо добавьте упаковщик:
var bottom= osy+$(element).height();
или используйте эквивалентный метод DOM:
var bottom= osy+element.offsetHeight;
var y = bottom - ev.pageY;
Примечание pageY
не является частью стандарта DOM Events и также недоступно в IE. Вы можете рассчитать его, используя стандартное свойство clientY
и настроив для страницы scrollTop
. Опять же, jQuery делает это для вас, добавляя расширение Firefox pageY
для всех браузеров, когда вы используете его собственные методы для привязки вашего обработчика событий:
$('#div1').mouseover(handleEvent);
вместо встроенного атрибута обработчика событий onmouseover=...
.