`
q272156430
  • 浏览: 275836 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用window.createPopup();做的简单下拉菜单

阅读更多

使用层做下拉菜单或者漂浮图片的话,最大的问题就是会被输入框等挡住,更别说框架,所以现在比较流行用window.createPopup();的说,它可以在页面所有元素之上,不存在被谁遮挡的问题。

下面是刚写的一个简单的下拉菜单。代码很简单,很容易看懂,所以修改也方便。

<script language="JavaScript" type="text/JavaScript">
//首先定义两个数组,一个是菜单文字,一个是链接
var MenuText = new Array(3);
var MenuEven = new Array(3);
MenuText[1] = ["菜单11","菜单12","菜单13"];
MenuText[2] = ["菜单21","菜单21"];
MenuText[3] = ["菜单31","菜单321","菜单33"];

MenuEven[1] = ["url11","url12","url13"];
MenuEven[2] = ["url21","url22"];
MenuEven[3] = ["url31","url32","url33"];

//初始化一个oPopup对象

var oPopup = window.createPopup();

//这两个是获得表格绝对位置的方法,很有用的说
function getLeftIE(x,m) {
var dx=0;
if (x.tagName=="TD"){
dx=x.offsetLeft;
}
else if (x.tagName=="TABLE") {
dx=x.offsetLeft;
if (m) { dx+=(x.cellPadding!=""?parseInt(x.cellPadding):2); m=false; }
}
return dx+(x.parentElement.tagName=="BODY"?0:getLeftIE(x.parentElement,m));
}
function getTopIE(x,m) {
var dy=0;
if (x.tagName=="TR"){
dy=x.offsetTop;
}
else if (x.tagName=="TABLE") {
dy=x.offsetTop;
if (m) { dy+=(x.cellPadding!=""?parseInt(x.cellPadding):2); m=false; }
}
return dy+(x.parentElement.tagName=="BODY"?0:getTopIE(x.parentElement,m));
}

//显示菜单
function ButtonClick(node,t)
{
//首先得到鼠标所在的表格的位置
var left = getLeftIE(node,true)-8;
var top = getTopIE(node,true);
//定义打开的oPopup的宽度,高度
var width = 90;
var height = MenuText[t].length*20;
//清空oPopup的内容,否则每次调用都只会在后面接着写
oPopup.document.body.innerHTML = "";
var oPopBody = oPopup.document.body;
oPopup.show(left,top, width, height, document.body);
oPopup.document.open;
//让oPopup在鼠标离开时自动隐藏。
oPopup.document.write("<body leftmargin=0 topmargin=0 scroll=no style='border : 0 px;' onmouseover=clearTimeout(parent.popt); onmouseout=parent.popt=setTimeout('parent.oPopup.hide()',10);>");

//用document.write()写菜单内容
oPopup.document.write("<table width=100% height=100% style='border-collapse : collapse;'>");
for(var i=0;i<MenuText[t].length;i++)
{
oPopup.document.write("<tr><td background='image/topbg.gif' bgcolor=#cccccc style='border-top : #cccccc 1px solid;border-bottom : #666666 1px solid;border-left : #cccccc 1px solid;border-right : #666666 1px solid;mouse : hand; font-size : 12px; color:#000000;text-align : left;vertical-align : center;CURSOR: hand' onmouseover=this.bgColor='#C2D2E5'; onmouseout=this.bgColor='#cccccc'; height='20' onclick='parent.parent.main.location.href=\""+MenuEven[t][i]+"\"';>"+MenuText[t][i]+"</td></tr>");
}
oPopup.document.write("</table></td></tr></table>");
oPopup.document.write("</body>")
}


</SCRIPT>

主要方法就这么多,由于我使用了框架,所以菜单代码中链接打开位置是下面的框架“main"。用下面的语句调用菜单显示方法ButtonClick()

<td align="left" onMouseOver="ButtonClick(this,1)">菜单1</td>

在此点击鼠标,菜单就会在此格的上面出现。菜单内容是上面那个数组 MenuText[1] = ["菜单11","菜单12","菜单13"];在其他地方显示其他菜单时只要修改数组和调用时的数字就行了。

分享到:
评论

相关推荐

    挡不住的菜单(模拟Windows)

    Ps:主代码位于Menu.js文件中. ...因为windows.createPopup()方法只有IE浏览器支持.如果请在IE上面进行测试.另外,因为做的时间比较仓促,有些代码看起来会很乱,希望大家多多包涵. http://ham.javaeye.com欢迎光临

    用DIV完美模拟createPopup 弹出窗口(脚本之家修正版),支持Firefox,ie,chrome

    补增一个效果图! 模拟Popup body{ margin:0; padding:0; text-align:center; } #container{ margin:50px auto; padding:10px auto; } #popupcontent{ position:absolute;... cursor:defaul

    JavaScript+xml实现下拉二级联动菜单

    6. **兼容性与限制**:由于使用了`window.createPopup()`方法,此菜单仅支持IE5.5及以上版本的浏览器。同时,如果子菜单需要在新窗口打开,则可能会遇到浏览器的弹窗拦截问题。 #### 二、实现原理与代码示例 为了...

    javascript自定义右键弹出菜单实现方法.docx

    this.style.color=''\" onclick=\"parent.window.open('/news/view.aspx?id=" + id + "');\"&gt;查看新闻&lt;/td&gt;&lt;/tr&gt;"; var TrBr1 = "&lt;tr&gt;&lt;td style=\"background-color:ThreeDShadow;height:1px;\"&gt;&lt;/td&gt;&lt;/tr&gt;"; var ...

    跨帧无限级菜单

    如你是做相关框架或者是企业管理软件的,需要使用到它来布局,那他的层级是最高的,也就是说他的z-index是最高的,那就会带来一个问题,假如你的ifream上面可能会出现诸如菜单,悬浮div的时候,那他们将会被帧覆盖。...

    使用JavaScript的菜单和子菜单

    `window.createpopup`是Internet Explorer浏览器特有的一种方法,它允许开发者创建弹出窗口,这些窗口可以用于创建浮动的上下文菜单或复杂的动态菜单系统。这个函数的主要优势在于它可以将菜单定位在屏幕上的任意...

    桌面漂浮flash.rar

    描述中指出,开发者已经利用`window.createPopup()`方法成功地在桌面上创建了一个浮动的Flash元素,但遇到的问题是这个Flash元素不透明,无法像QQ魔法表情那样实现透明效果。为了深入理解这个问题并提供解决方案,...

    无限菜单之 xml+popup 版(IE5.5+)

    既然大胆假设了一把,那么就来小心求证一下:首先,用xsl来实现解析一级xml很容易搞定,使用xsl:for-each遍历生成子菜单,并且,如果子菜单中还有子xml数据,将这些子xml数据存在子菜单对应的数据岛中,以备后面处理...

    JS日期和时间选择控件升级版(自写)

    - 在开发过程中,作者原本打算使用window.createPopup()方法来实现日历的弹出窗口,但遇到了两个技术障碍。 - 第一个障碍是createPopup窗口在用户点击非弹出窗口区域后会立即关闭,这会导致在选择年份时不小心点击...

    从底部弹出的广告小窗口Script代码

    值得注意的是,这里使用的`window.createPopup()`并非所有浏览器都支持的标准API,因此如果要在现代Web应用中使用类似的效果,可能需要考虑使用更兼容的解决方案,例如利用HTML5的`&lt;dialog&gt;`元素结合CSS和JavaScript...

    js 右下角弹出div 类似 QQ消息提示

    1. **跨浏览器兼容性**:由于上述代码中使用了 `window.createPopup()` 方法,该方法主要用于 IE 浏览器。在实际应用中,需要考虑其他浏览器的兼容性问题,比如使用第三方库(如 jQuery)或原生 JavaScript 来替代。...

    js实现 html 鼠标右键 菜单

    var pop=window.createPopup(); //设置弹出菜单的内容 pop.document.body.innerHTML=menuDiv.innerHTML; var rowObjs=pop.document.body.all[0].rows; //获得弹出菜单的行数 var rowCount=rowObjs.length; //...

    实现跨frame的js加载xml动态生成的菜单

    JavaScript负责解析XML文件,提取出菜单项,并使用`createPopup`创建一个弹出窗口,然后在该窗口中动态渲染菜单。这样,无论用户在哪个frame中操作,都能看到一致的菜单。这种方法的一个关键优点是菜单可以随着用户...

    浏览器右下角弹出提示框代码实例

    该实例不仅展示了如何利用`window.createPopup()`方法创建弹出窗口,还涉及了如何设置样式以及动态控制弹出框的显示与隐藏过程。 #### 二、核心代码解析 ##### 1. 创建弹出窗口 ```javascript var oPopup = ...

    【温故而知新】JavaScript的BOM之Window对象.md

    下面是一些使用Window对象的示例代码: ```javascript // 获取当前窗口滚动位置 var currentScrollPosition = window.pageYOffset; console.log("当前滚动位置:", currentScrollPosition); // 设置窗口滚动到指定...

    使用JAVASCRIPT实现弹出框,过一段时间自动消失.txt

    值得注意的是,上述代码中使用的某些技术(如`window.createPopup()`)可能不适用于所有现代浏览器。在实际开发中,推荐使用更通用的方法,例如利用HTML5的`&lt;dialog&gt;`元素或第三方库(如jQuery UI的Dialog插件),来...

    N种改善用户体验的DEMO

    这个文件可能涉及到JavaScript中的`window.createPopup()`函数,该函数用于创建浮动窗口,通常用于创建弹出式菜单或提示信息,以增强用户的交互体验。不过,此功能在现代浏览器中已被废弃,现在更多地使用其他方法...

Global site tag (gtag.js) - Google Analytics