2011-12-21 4 views
0

Я помогаю для отладки веб-сайта, а иногда я получаю эту ошибку: объекта требуется CWS.js линии 45 символов 3Javascript объект ошибки требуется

// Track cursor position 
var CWS_curPosX, CWS_curPosY; 
document.onmousemove = CWS_MouseMove; 

function CWS_MouseMove(evt) 
{ 

if(window.Event) 
{ 
    if(evt && evt.pageX) 
    { 
     CWS_curPosX = evt.pageX; 
     CWS_curPosY = evt.pageY; 
    } 
} 
else 
{ 
    CWS_curPosX = event.clientX + document.body.scrollLeft; // line 45 
    CWS_curPosY = event.clientY + document.body.scrollTop; 
} 

Я понятия не имею, чтобы решить эту проблему ... Спасибо заранее.

ответ

1

Существует несколько важных isues с кодом, в первую очередь ваше использование window.Event - это if(...) условие всегда будет оценивать ложь, так как ни один браузер не поддерживает это свойство на window объекта. На самом деле свойство имеет нижний регистр e в IE.

Так эта конструкция часто используется, и похож на твой:

function someEventHandler(evt){ 
    if(window.event){ // Note lower case 'e' in 'event' 
     // browser is IE, read properties of the event from window.event 
    } 
    else{ 
     // browser is probably some flavour of Mozilla, use the passed-in 'evt' 
     // parameter to read properties of the event 
    } 
} 

Прочитайте эту ссылку (event object in different browsers) для получения дополнительной информации.

Это межсерверное различие является одной из многих причин, по которым многие люди склонны использовать фреймворк, такой как jQuery, который упрощает этот код обработки событий в единый метод чтения свойств события.

+0

Спасибо за ваш быстрый ответ, я попробую сейчас, и я жду обратной связи тестера. – Gun

+0

Гораздо проще: event = event || window.event' –

0

заменить событие на evt в 2 строках
CWS_curPosX = evt.clientX + document.body.scrollLeft;
CWS_curPosY = evt.clientY + document.body.scrollTop;

+0

В случае первого комментария не работает, я попробую ваш ответ, спасибо за ваш быстрый ответ тоже !!! – Gun