Еще один способ реализовать это, создав собственный ScrollViewer, подобный этому:
public class MyScrollViewer : ScrollViewer
{
protected override void OnMouseWheel(MouseWheelEventArgs e)
{
var parentElement = Parent as UIElement;
if (parentElement != null)
{
if ((e.Delta > 0 && VerticalOffset == 0) ||
(e.Delta < 0 && VerticalOffset == ScrollableHeight))
{
e.Handled = true;
var routedArgs = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
routedArgs.RoutedEvent = UIElement.MouseWheelEvent;
parentElement.RaiseEvent(routedArgs);
}
}
base.OnMouseWheel(e);
}
}
Чтобы получить цель события в браузерах, совместимых со стандартами, и в IE, используйте
var target = evt ? evt.target : window.event.srcElement;
В MDC есть обзор различных свойств объектов событий .
Вот почему вам следует рассмотреть возможность использования библиотеки javascript, такой как jquery, YUI или prototype. Эти библиотеки абстрагируют различия, связанные с браузером, что упрощает кодирование.
<script> function go() { alert('dom is loaded: register event handlers now') ; } </script> <body onload=" go(); "> </body>
Как упоминалось, IE не передает объект события в качестве параметра. Попробуйте следующее:
var form = document.getElementById('theform')
/* create the event handler */
form.gen.onclick = function( evt ) {
if(!evt)
evt = window.event;
var f = evt.target.form
var y = f.year.value
var m = f.month.value
genCalendar( document, y, m, 'theCalendar' )
}
Или еще лучше используйте кроссбраузерную библиотеку, например Prototype.js или jQuery .