2011-12-21 69 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

有几个关键的所有主题与你的代码,主要介绍如何使用window.Event - 这if(...)条件将始终评估为假,因为没有浏览器支持window对象上此属性。实际上,该属性在IE中有一个小写e

所以这个结构经常被使用,类似于你:

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 2011-12-21 13:04:20

+0

一个更简单的方法是'event = event || window.event' – 2013-01-22 18:38:13

0

将事件替换为2行中的evt
CWS_curPosX = evt.clientX + document.body.scrollLeft;
CWS_curPosY = evt.clientY + document.body.scrollTop;

+0

如果第一条评论不起作用,我会尝试您的回复,谢谢您的快速回复! – Gun 2011-12-21 13:05:13