各位老大拜托了,这是全部源码(javascript in mozilla)。。。。

srole 2004-09-20 05:53:57
发了几次帖子,在网上刨(pao)了好久,没有找到合适的办法解决,下面的代码在ie中运行良好,在netscape/mozilla中无法显示菜单项,声明:var vSrc = e.target || e.srcElement; 后,window.alert()和document.write()也无法运行(mozilla中),不知道是什么原因。
文件menu.htm:

<script language="javascript">
document.writeln(" <DIV id=menuDiv style=\"Z-INDEX: 2; VISIBILITY: hidden; WIDTH: 50px; POSITION: absolute; HEIGHT: 1px; BACKGROUND-COLOR: #ffffff\"></DIV>");

//下拉菜单相关代码
var h;
var w;
var l;
var t;
var topMar = 1;
var leftMar = -2;
var space = 1;
var isvisible;
var MENU_SHADOW_COLOR='#ffffff';//定义下拉菜单阴影色
var global = window.document
global.fo_currentMenu = null
global.fo_shadows = new Array


function HideMenu()
{
var mX;
var mY;
var vDiv;
var mDiv;
if (isvisible == true)
{
vDiv = document.all("menuDiv");
mX = window.event.clientX + document.body.scrollLeft;
mY = window.event.clientY + document.body.scrollTop;
if ((mX < parseInt(vDiv.style.left)) || (mX > parseInt(vDiv.style.left)+vDiv.offsetWidth) || (mY < parseInt(vDiv.style.top)-h) || (mY > parseInt(vDiv.style.top)+vDiv.offsetHeight)){
vDiv.style.visibility = "hidden";
isvisible = false;
}
}
}

function ShowMenu(vMnuCode,tWidth) {
var e = window.event ;
var vSrc = e.target || e.srcElement;
// var vSrc=e.target?e.target:e.srcElement;

vMnuCode = "<table border=0 id='menu' cellspacing=1 cellpadding=3 style='width:"+tWidth+"' class=MenuDropDown onmouseout='HideMenu()'><tr height=23><td nowrap align=left class=MenuDropDown>" + vMnuCode + "</td></tr></table>";

h = vSrc.offsetHeight;
w = vSrc.offsetWidth;
l = vSrc.offsetLeft + leftMar+4;
t = vSrc.offsetTop + topMar + h + space-2;

vParent = vSrc.offsetParent;

while (vParent.tagName.toUpperCase() != "BODY")
{

l += vParent.offsetLeft;
t += vParent.offsetTop;
vParent = vParent.offsetParent;
}

menuDiv.innerHTML = vMnuCode;
menuDiv.style.top = t;
menuDiv.style.left = l;
menuDiv.style.visibility = "visible";
isvisible = true;

}




s4='<a href=#>open</a><br>';
s4+=' <a href=#> save</a> <br>';
s4+='<a href=#>close</a><br>';
s4+='<a href=#>close all</a><br>';
s4+='<a href=#>exit</a><br>';

</script>
<table>
<tr>
<td>
<a href="#"
onmouseover ="javascript:ShowMenu(s4,80)"
onmouseout="HideMenu()" > File
</a></td>
</tr></table>
...全文
204 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
srole 2004-09-20
  • 打赏
  • 举报
回复
有那位DX用上面的代码调试出来的阿,我在这里学习了。。。。。
mjpclab 2004-09-20
  • 打赏
  • 举报
回复
是这样啊
srole 2004-09-20
  • 打赏
  • 举报
回复
就是function(e){ var vSrc=e.target?e.target:e.srcElement;}样子吧
mjpclab 2004-09-20
  • 打赏
  • 举报
回复
是系统自动传递的
srole 2004-09-20
  • 打赏
  • 举报
回复
把event对象传给函数的方法我试验过,好像不行。。。。
mjpclab 2004-09-20
  • 打赏
  • 举报
回复
netscape/mozilla 中e是以参数形式传递给函数的,看看arguments[0]中有没有event对象(也可能是在auguments[2]中,不太清楚位置……)
源码链接: https://pan.quark.cn/s/a4b39357ea24 在电子工程领域中,51单片机被视作一种应用广泛的微控制器,特别是在教学以及小型嵌入式系统方面。本文将详细研究51单片机中串口通信的核心组成部分——定时器2及波特率发生器的应用方法。串口通信是设备间进行数据传输的基本途径,而定时器2和波特率发生器则是完成这一功能的关键硬件配置。现在,让我们首先了解定时器2。在51单片机系列中,包含了多个定时器,比如定时器0、定时器1和定时器2。这些定时器能够在不同的工作模式下运行,例如计数模式、定时模式或者波特率发生器模式。定时器2通常用于产生精确的时间间隔,例如在串口通信中产生特定的时序脉冲,以此来控制数据的发送与接收速度。在51单片机中,定时器2的工作模式可以通过设定特殊功能寄存器T2CON来决定。当定时器2被用作波特率发生器时,它能够通过预分频器对晶振频率进行分频,进而生成所需的波特率。接下来,我们将讨论波特率发生器。波特率指的是单位时间内传输的位数,它是衡量串口通信速率的一个重要指标。在51单片机中,波特率通常是通过调整定时器的溢出率来设定的。在波特率发生器模式下,定时器2可以通过预分频器对晶振频率进行分频,然后根据分频后的频率来确定串口的波特率。具体的计算公式为:波特率 = (系统时钟频率 / (16 + TH2+TL2)) / 2。其中,TH2和TL2是定时器2的高位和低位寄存器,它们的值会影响到最终的波特率。在提供的程序中,开发者可能已经实现了使用定时器2作为波特率发生器的逻辑,并且经过了测试验证。这表明他们可能已经通过设置T2CON寄存器选择了恰当的工作模式,调整了TH2和TL2的值以获得所需的波特率,同时可能还涉及了中断服务程...

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧