Firefox下“event is not defined”的解决方案

来源:互联网 发布:用u盘怎么重装mac系统 编辑:程序博客网 时间:2024/05/16 08:59
最近在做项目过程中,需要将js文字超出长度的内容用省略号代替,在鼠标悬停时能以悬浮框的形式显示出来。javascript代码如下:
        <script>         function overShow(obj) {          var showDiv = document.getElementById('showDiv');          showDiv.style.left = event.clientX+"px";          showDiv.style.top = event.clientY+"px";          showDiv.style.display = 'block';          //alert(obj.innerHTML);          showDiv.innerHTML = obj.innerHTML;         }         function outHide() {          var showDiv = document.getElementById('showDiv');          showDiv.style.display = 'none';          showDiv.innerHTML = '';         }        </script>
上面这段代码在谷歌浏览器下正常工作,但是在Firefox下始终无法作用,老是报“event is not defined”的错误,多次尝试更改,均无法解决,上网搜索了一下,发现原因是因为在Firefox中使用了不同的事件对象模型,不同于IE Dom,用的是W3C Dom。Firefox DOM中并无event,故可以尝试用如下方法解决:
        <script>         function overShow(obj,e) {  //加入一个输入参数e          var showDiv = document.getElementById('showDiv');          var theEvent = window.event|| e;  //theEvent 作为clientX的父节点          showDiv.style.left = theEvent.clientX+"px";          showDiv.style.top = theEvent.clientY+"px";          showDiv.style.display = 'block';          //alert(obj.innerHTML);          showDiv.innerHTML = obj.innerHTML;         }         function outHide() {          var showDiv = document.getElementById('showDiv');          showDiv.style.display = 'none';          showDiv.innerHTML = '';         }        </script>
    <div class='content' onmouseover="overShow(this,event)" onmouseout="outHide()">            js0 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示            js0 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示            js0 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示            js0 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示    </div>
 以上javascript代码兼容IE和FireFox。
0 0