社区
Web 开发
帖子详情
有个问题,我有个控件要在网页上用,但不能确定客户系统中有没有,我想要flash控件一样,若客户端没有就自动下载并装入系统,请问该什样做
zhucp
2001-09-27 12:37:43
各位大哥:有个问题,我有个控件要在网页上用,但不能确定客户系统中有没有,我想要flash控件一样,若客户端没有就自动下载并装入系统,请问该什样做
...全文
60
2
打赏
收藏
有个问题,我有个控件要在网页上用,但不能确定客户系统中有没有,我想要flash控件一样,若客户端没有就自动下载并装入系统,请问该什样做
各位大哥:有个问题,我有个控件要在网页上用,但不能确定客户系统中有没有,我想要flash控件一样,若客户端没有就自动下载并装入系统,请问该什样做
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jneu
2001-09-28
打赏
举报
回复
gz
yousoft2013
2001-09-28
打赏
举报
回复
1.
InstallShield 6 支持制作网络安装盘,即Web方式发布。
清华大学出版的《精通InstallShield 6》书上有
2.
当你在HTML中插入一个COM组件对象的时候,用下面的语句:
<object classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codeBase="http://www.xxx.com.cn/ocx">
只要codebase地址没有问题,便会自动下载安装
Flash
童谣
Flash
童谣—包括《南南
有个
蓝蓝》等24首幼儿常听的精美的童谣歌曲。分别是:什么上山吱扭扭、小蝴蝶、一个大一个小、不倒翁、对数歌、五只小青蛙、属相歌、南南
有个
蓝蓝、英语字母、板凳绑扁担、别说我小、布娃娃、不字歌、凑数歌、几条船、十盏灯、四只小小鸟、数字谣、我唱歌儿我有一只可爱小狗、五指歌、小和尚、小小机器人、西游记等
基于STM32单片机的ThreadX GUIX教程_GUIX Studio Chinese Font(QSPI
Flash
) 软件源码.zip
基于STM32单片机的ThreadX GUIX教程_GUIX Studio Chinese Font(QSPI
Flash
) 软件源码.zip
基于STM32H7系列MCU单片机开发的_emWin6.x实验_全字库实现,GB2312编码(SPI
Flash
裸机) 实验例程软件源码.zip
基于STM32H7系列MCU单片机开发的_emWin6.x实验_全字库实现,GB2312编码(SPI
Flash
裸机) 实验例程软件源码.zip
无限菜单之 xml+popup 版(IE5.5+)
在IE5.5+
中
开始支持的Popup窗口有很多很特别的特性: Popup窗口可以超出浏览器窗口区域; 可以不用担心被下拉框、
flash
、Iframe等这些东西遮挡; 一个Popup窗口打开后,当在它的区域以外点击或者另一个Popup窗口被打开时都会
自动
关闭; Popup窗口是
没有
焦点的; 用户
不能
改变Popup窗口大小; Popup窗口
中
的内容是
不能
被选择的; ...... 因为这些特征,Popup窗口制作的菜单比起传统的div(层)实现的菜单有着得天独厚的优势,不仅效果会非常好,而且代码也会是非常少的,只是对于实现起来却有几个需要解决的棘手
问题
:多个Popup共存的
问题
、如何递归生成菜单、如何控制Popup的显示隐藏…… 要用Popup制作菜单一个最重要的
问题
就是要解决多个Popup共存的
问题
,Msdn上的描述是:“一个Popup窗口打开后,当另一个Popup窗口被打开时就会
自动
关闭”。我本来一直以为Popup窗口是不可以多个共存的,不过偶然从51js上知道:父Popup窗口可以创建子Popup窗口,子Popup窗口又可以创建子Popup窗口,这样就可以同时存在一个Popup窗口家族,当父Popup窗口关闭,所有的子孙窗口都会关闭。这点恰好可以运用在菜单
中
——父菜单关闭子菜单一起关闭,省去很多繁琐的判断。 最开始,我写了一个简单的两层的Popup右键菜单,为此专门写了一个根据级数生成Popup窗口家族的递归方法: var pops = new Array(); // 用来存储Popup窗口家族的数组 function CreatePopup(degree) { if (degree < 0) // 层数
不能
小于0 return null; if (pops[degree] != null) //如果已经存在则不需创建 return pops[degree]; if (degree == 0) pops[0] = window.createPopup(); //创建最顶层Popup窗口 else{ if (pops[degree - 1] == null) pops[degree - 1] = CreatePopup(degree - 1) //递归回溯一层一层开始创建 pops[degree] = pops[degree - 1].document.parentWindow.createPopup(); //从父Popup窗口创建子Popup窗口 } pops[degree].document.body.setAttribute("degree", degree); return pops[degree]; } CreatePopup(1); //创建一个2层的Popup家族 这个方法可以解决多个Popup共存的
问题
,只是如果要使用这个方法来实现无限级菜单代码恐怕就比较繁琐了。这个例子,只是为我验证了无限级Popup窗口共存的可能,并
没有
继续走下去,因为我有了更好的思路。 Xml真是好东西,在Web
控件
中
,可以得到灵活的运用(在我的上篇随笔《xml+xsl+htc,web
控件
开发的理想组合》
中
,已经简单提到了xml+xsl+htc的理想组合),在这里也不例外,先用Xml来定义好菜单的数据menu.xml:
通过Xml,可以很方便直观的定义菜单数据。 菜单数据已经定义好了,现在
问题
就是如何来把这些xml数据变成Popup菜单?!在传统的用div(层)来实现的菜单,一般都是一次性将所有级菜单数据生成HTML,放在各个层
中
,然后动态在制定位置显示隐藏这些层来实现模拟菜单的效果,在这里当然也可以这么
做
。回想一下菜单的特征:每次显示一级菜单,如果该级菜单
中
某菜单项
中
有子菜单,当鼠标经过或者点击该菜单项时弹出下级子菜单,这是一个递归的过程。如果我们可以:每次显示一级xml的内容,如果该级xml
中
某节点有子节点,当鼠标经过该节点时读取下级xml的内容,这也是一个递归的过程,而且恰好和菜单的显示过程是一一对应的。 既然大胆假设了一把,那么就来小心求证一下:首先,用xsl来实现解析一级xml很容易搞定,使用xsl:for-each遍历生成子菜单,并且,如果子菜单
中
还有子xml数据,将这些子xml数据存在子菜单对应的数据岛
中
,以备后面处理鼠标经过或点击菜单项时用到。下面是Menu.xsl用来生成子菜单的部分:
现在就是解决鼠标经过菜单项时,如果有子菜单则解析子菜单数据,并使用子Popup窗口显示子菜单数据,刚才我们存的数据岛这时候就可以派
上用
场了。在xsl
中
,需要用到一些
客户
端
脚本来辅助完成了 // 创建当前窗体(可以是IE窗体也可以是Popup窗体)的Popup对象 // 这个Popup对象就是用来存储子菜单数据的 var oPopup = document.parentWindow.createPopup(); // 装载xsl var stylesheet = new ActiveXObject("Microsoft.XMLDOM"); stylesheet.async = false; stylesheet.load( "menu.xsl" ); // 鼠标经过菜单项 function ItemOver(obj) { // 隐藏已经打开的菜单项 if (preObj != null) { if (preObj == obj) return; oPopup.hide(); // 要清空原Popup
中
的数据——document.write()方法是接着原来的内容往里面写,所以如果不清空会出现重复数据 oPopup = document.parentWindow.createPopup(); // 恢复前一个菜单项的状态 ItemNormal(preObj); preObj = null; } obj.className='PopMenuItemOver'; if (obj.cells(2).children.length > 0) //有子菜单 { obj.cells(2).children(0).src = "images/ArrowRHighlight.gif"; // 获取子菜单xml数据 var subMenuData = obj.all.tags("xml")(0).XMLDocument; // 根据子菜单xml数据和当前xsl文档生成HTML var sHtml = subMenuData.transformNode(stylesheet); // 将解析出来的HTML全部输出到Popup
中
,在Popup
中
,又可以利用这些脚本再Popup…… oPopup.document.write(sHtml); // 计算popup内容的实际宽度高度 oPopup.show(0, 0, 1, 1, obj); var width = oPopup.document.body.scrollWidth; var height = oPopup.document.body.scrollHeight; oPopup.hide(); // 显示菜单 oPopup.show(obj.offsetWidth, 0, width, height, obj); preObj = obj; } } // 鼠标移出菜单项 function ItemOut(obj) { if (oPopup.isOpen && preObj == obj) // 如果子菜单被打开则跳过 return; ItemNormal(obj); } // 恢复到菜单项的默认状态 function ItemNormal(obj) { obj.className='PopMenuItem'; if (obj.cells(2).children.length > 0) { obj.cells(2).children(0).src = "images/ArrowR.gif"; } } 这样:使用menu.xsl解析一级xml的内容生成一级菜单,如果该级xml
中
某节点有子节点,当鼠标经过该节点时,创建当前窗口/Popup窗口的子Popup窗口,使用menu.xsl解析子节点
中
xml的内容并输出显示到子Popup
中
,递归,即可通过Popup显示所有子菜单。 作为一个菜单来讲,这个例子还有很多要完善的地方(当我再结合htc时它绝对是一个非常棒的菜单
控件
),但是这个例子已经完整地实现了一个xml结合xsl递归生成无限Popup菜单的例子,这个简洁的代码再次印证了xml+xsl+htc的理想组合。
基于STM32H7系列MCU单片机开发的_emWin6.x实验_2D图形库之流位图绘制(SPI
Flash
RTOS ) 实验例程软件源码.zip
基于STM32H7系列MCU单片机开发的_emWin6.x实验_2D图形库之流位图绘制(SPI
Flash
RTOS ) 实验例程软件源码.zip
Web 开发
81,117
社区成员
341,739
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章