您的位置:首页 > 其它

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

2016-12-06 14:05 1041 查看
最近在做项目过程中,需要将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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  firefox event