急请高手救火---在IE中可以运行但NS中却不行,
<HTML>
<BODY>
<div id=mydiv onmouseout='cls()' style="width:200px;height:200px;background-color:seashell">
<table cellpadding="0" cellspacing="0" border="1" frame=box>
<tr style="height:30px"><td>密码管理</td></tr>
<tr style="height:30px"><td>外观选择</td></tr>
<tr style="height:30px"><td>权限设置</td></tr>
<tr style="height:30px"><td>退出系统</td></tr>
</table>
</div>
<input name=dd type=button value='显示层' onclick=showdiv()>
</BODY>
</HTML>
<script>
/*
怎样才能做到,只要鼠标离开层,层才会隐藏,否则一直显示
下面方法只可在IE中运行但在NS却不运行
怎样改可即在IE中运行也可在NS中运行
*/
function cls()
{
var div = document.getElementById("mydiv")
if(div.componentFromPoint(event.clientX,event.clientY)=="outside")
{
div.style.visibility='hidden'
}
}
function showdiv()
{
var div = document.getElementById("mydiv")
div.style.visibility='visible'
}
</script>
问题点数:30、回复次数:11Top
1 楼menrock(教坏细路)回复于 2005-11-02 10:08:41 得分 0
<HTML>
<BODY>
<div id=mydiv onmouseout='cls()' style="width:200px;height:200px;background-color:seashell">
<table cellpadding="0" cellspacing="0" border="1" frame=box>
<tr style="height:30px"><td>密码管理</td></tr>
<tr style="height:30px"><td>外观选择</td></tr>
<tr style="height:30px"><td>权限设置</td></tr>
<tr style="height:30px"><td>退出系统</td></tr>
</table>
</div>
<input name=dd type=button value='显示层' onclick=showdiv()>
</BODY>
</HTML>
<script>
/*
怎样才能做到,只要鼠标离开层,层才会隐藏,否则一直显示
下面方法只可在IE中运行但在NS却不运行
怎样改可即在IE中运行也可在NS中运行
*/
function cls()
{
var div = document.getElementById("mydiv")
div.style.visibility='hidden'
}
function showdiv()
{
var div = document.getElementById("mydiv")
div.style.visibility='visible'
}
</script>Top
2 楼liberationxin(高山)回复于 2005-11-02 10:16:27 得分 0
当从'密码管理' 到'外观选择' 过程中,层会自动隐藏,所以用componentFromPoint,但此方法却在NC中不运行Top
3 楼xdspower(杂食菜熊)回复于 2005-11-02 10:44:36 得分 30
var div = document.getElementById("mydiv") 这个是没有考虑兼容性的,下面是一段兼容性处理代码,你加入在var div = document.getElementById("mydiv") 前并把document.getElementById("mydiv")替换成getObjectById("mydiv" )试一试。
function lib_bwcheck(){ //兼容性处理代码
this.ver=navigator.appVersion;
this.agent=navigator.userAgent
this.dom=document.getElementById?1:0
this.win = (navigator.appVersion.indexOf("Win")>0);
this.xwin = (navigator.appVersion.indexOf("X11")>0);
this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
this.ie4=(document.all && !this.dom)?1:0;
this.ie=this.ie4||this.ie5||this.ie6
this.mac=this.agent.indexOf("Mac")>-1
this.opera5=this.agent.indexOf("Opera 5")>-1
this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
this.ns4=(document.layers && !this.dom)?1:0;
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5 || this.dom||false);
this.width = null;
this.height = null;
return this
}
var bw = new lib_bwcheck();
function getObjectById( ID ) {
if (bw.ns6) return document.getElementById(ID);
else if (bw.ns) return document.layers[ID];
else return document.all[ID];
}
Top
4 楼liberationxin(高山)回复于 2005-11-02 11:20:51 得分 0
楼上兄才,方法不行Top
5 楼liberationxin(高山)回复于 2005-11-02 13:30:32 得分 0
自己顶一下,不然石沉大海Top
6 楼liberationxin(高山)回复于 2005-11-02 17:29:37 得分 0
怎么没有人回答Top
7 楼xdspower(杂食菜熊)回复于 2005-11-02 17:59:06 得分 0
可能你的所有定义中要同时定义 ID 和name,比如你
<div id="mydiv" name="mydiv" onmouseout="cls();" style="width:200px;height:200px;background-color:seashell">//注意,你的原来代码中cls()部分的引号不对的。
此外你最好跟踪调试一下程序。Top
8 楼liberationxin(高山)回复于 2005-11-02 17:59:35 得分 0
版主哪里去了,怎么不来救火?Top
9 楼xdspower(杂食菜熊)回复于 2005-11-02 18:06:31 得分 0
<HTML>
<head>
<script>
function lib_bwcheck(){ //兼容性处理代码
this.ver=navigator.appVersion;
this.agent=navigator.userAgent
this.dom=document.getElementById?1:0
this.win = (navigator.appVersion.indexOf("Win")>0);
this.xwin = (navigator.appVersion.indexOf("X11")>0);
this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
this.ie4=(document.all && !this.dom)?1:0;
this.ie=this.ie4||this.ie5||this.ie6
this.mac=this.agent.indexOf("Mac")>-1
this.opera5=this.agent.indexOf("Opera 5")>-1
this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
this.ns4=(document.layers && !this.dom)?1:0;
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5 || this.dom||false);
this.width = null;
this.height = null;
return this
}
var bw = new lib_bwcheck();
function getObjectById( ID ) {
if (bw.ns6) return document.getElementById(ID);
else if (bw.ns) return document.layers[ID];
else return document.all[ID];
}
</script>
</head>
<BODY>
<div id=mydiv onmouseout='cls()' style="width:200px;height:200px;background-color:seashell">
<table cellpadding="0" cellspacing="0" border="1" frame=box>
<tr style="height:30px"><td>密码管理</td></tr>
<tr style="height:30px"><td>外观选择</td></tr>
<tr style="height:30px"><td>权限设置</td></tr>
<tr style="height:30px"><td>退出系统</td></tr>
</table>
</div>
<input name=dd type=button value='显示层' onclick=showdiv()>
</BODY>
</HTML>
<script>
/*
怎样才能做到,只要鼠标离开层,层才会隐藏,否则一直显示
下面方法只可在IE中运行但在NS却不运行
怎样改可即在IE中运行也可在NS中运行
*/
function cls()
{
var div = getObjectById("mydiv")
div.style.visibility='hidden'
}
function showdiv()
{
var div = getObjectById("mydiv")
div.style.visibility='visible'
}
</script>
-------------------
上面的代码在IE6和firefox1.5Bate2上的显示效果完全一样。Top
10 楼liberationxin(高山)回复于 2005-11-03 07:47:07 得分 0
楼上的兄弟你把程序本意改错了,当鼠标从<tr>到<tr>过程中,虽然在<table>中,也会出发
onmouseover 事件,层会自动隐藏,所以用componentFromPoint判断,当前的鼠标是否在控件层中,但此方法却在NC中不运行!此问题难住我两天了---急啊
Top
11 楼liberationxin(高山)回复于 2005-11-03 07:48:32 得分 0
刚才打错了是onmouseout 而不是onmouseoverTop




