javascript:window.popup()+XSLT弹出式菜单

PopupWindow的使用原理以及实现卡片效果 前记:   本人菜鸟一枚,第一次写博客,写得不好。不喜勿喷,有疑问的地方可以留言回复~。  PopupWindow的使用思路:   在说明他的相关使用方法之前,我们先理清一下它的使用思路。以方便我们针对性的研究各个问题。   一· 我们大致会使用PopupWindow的场景:       1.希望点击某些东西之后,能弹出一个独立的操作区域,以承载更多的内容。       2.满足一些比 阅读详情

一、菜单XML内容文档

--menu.xsl

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">

<xsl:template match="menu">
<HTML>
<HEAD>
<TITLE> </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<style>
body,td{
 font-size:9pt;
}
.PopMenuOutset{border:1px solid;border-color: buttonface threeddarkshadow threeddarkshadow buttonface;FILTER: progid:DXImageTransform.Microsoft.Shadow(direction=135,color=buttonshadow,strength=3); }
.PopMenuInset{border:1px solid;border-color: buttonhighlight buttonshadow buttonshadow buttonhighlight;}
.PopMenu{background-color: buttonface;}
.PopMenuItem{height:18px;cursor:default;}
.PopMenuItemOver{height:18px;background-color: highlight;color:highlighttext;cursor:default;}
.PopMenuItemOver img{height:18px;background-color: highlight;color:highlighttext;cursor:default;}
</style>
</HEAD>

<BODY leftmargin="0" topmargin="0" scroll="no" style="border:0">
<script>
<![CDATA[
// 当前展开的菜单项
var preObj = null;

// 创建当前窗体(可以是IE窗体也可以是Popup窗体)的Popup对象
// 这个Popup对象就是用来存储子菜单数据的
var oPopup = document.parentWindow.createPopup();

// 装载xsl
var stylesheet = new ActiveXObject("Microsoft.XMLDOM");
stylesheet.async = false;
stylesheet.load( "menu.xsl" );

// 预装载图片
var img = new Image;
img.src = "images/ArrowRHighlight.gif";


function ItemDbClick(obj,id,name)
{
 //ItemOver(obj);
 returnValue(id,name);
}

function returnValue(id,name) {
   parent.returnValue(id,name);
}
// 鼠标经过菜单项
function ItemOver(obj) {
    obj.className='PopMenuItemOver';
}

// 鼠标点击菜单项
function ItemClick(obj,id,name)
{
 // 隐藏已经打开的菜单项
 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;
 } else {
                returnValue(id,name);
 }
}

// 鼠标移出菜单项
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";
 }
}


]]>
</script>
<table border="0" cellpadding="0" cellspacing="0" width="120" class="PopMenuOutset">
 <tr>
  <td>
   <table border="0" cellpadding="1" cellspacing="0" width="100%" class="PopMenuInset">
    <tr>
     <td class="PopMenu">
      <table border="0" cellpadding="0" cellspacing="0" width="100%" onselectstart="return false;">
       <!-- 遍历子菜单 -->
       <xsl:for-each select="menu">
        <tr height="18" onmouseover="ItemOver(this)" onmouseout="ItemOut(this);" >
                                                                <xsl:attribute name="title"><xsl:value-of select="@desc" /></xsl:attribute>
                                                                <xsl:attribute name="ondblclick">ItemDbClick(this,'<xsl:value-of select="@id" />','<xsl:value-of select="@fullName" />')</xsl:attribute>
               <xsl:attribute name="onclick">ItemClick(this,'<xsl:value-of select="@id" />','<xsl:value-of select="@fullName" />')</xsl:attribute>

         <td width="2" align="center">
          <IMG SRC="images/dot1.gif" WIDTH="6" HEIGHT="6" BORDER="0" ALT=""/>
         </td>
         <td>
          <xsl:value-of select="@name" />
          <xsl:if test="count(menu) > 0">
           <!-- 这里用来存储子菜单的xml数据 -->
           <xml>
            <xsl:copy-of select="."/>
           </xml>
          </xsl:if>
         </td>
         <td width="2" align="right" valign="top" style="padding-right: 6px; padding-top:4px;">
          <!-- 如果有子菜单则显示箭头 -->
          <xsl:if test="count(menu) > 0">
           <img src="images/arrowR.gif"/>
          </xsl:if>
         </td>
        </tr>
       </xsl:for-each>
      </table>
     </td>
    </tr>
   </table>
  </td>
 </tr>
</table>
</BODY>
</HTML>
</xsl:template>

</xsl:stylesheet>
 

二、生成菜单JAVASCRIPT脚本

<script language="javascript" type="">
// 装载xsl
var stylesheet = new ActiveXObject("Microsoft.XMLDOM");
stylesheet.async = false;
stylesheet.load( "menu.xsl" );
var popup;
function createPop(index) {
  // alert(index);
  var subMenuData = document.all.tags("xml")(index).XMLDocument;
  //var subMenuData = document.all.tags("xml")(index).XMLDocument;
  popup=window.createPopup();

  // 根据子菜单xml数据和当前xsl文档生成HTML
  var sHtml = subMenuData.transformNode(stylesheet);
  // 将解析出来的HTML全部输出到Popup中,在Popup中,又可以利用这些脚本再Popup……
  popup.document.write(sHtml);

  // 计算popup内容的实际宽度高度
  popup.show(0, 0, 1, 1);
  // alert(popup);
  var width = popup.document.body.scrollWidth;
  var height = popup.document.body.scrollHeight;
  //alert(index);
  popup.hide();

  // 显示菜单
  popup.show(event.screenX-5, event.screenY+10, width, height);
  //popup.show(event.screenX-5, event.screenY+10, 100, 300);
}
//二级菜单
function returnValue(id,name) {
  popup.hide();
  //name保存的主框架与树框架
  var obj=new Array();
  obj=name.split(",");
  //alert(obj[0]);
  if(obj[0]!=null && obj[0]!=""){
    href=obj[0];
    index=href.indexOf(':');
    title=href.substring(0,index);
    href=href.substring(index+1);
    //弹出窗口
    if(href.indexOf("windowOpen")>=0){
      winnew=window.open(href,'open','top=100,left=100,width=600,height=500,scrollbars=yes, resizable=yes,status=yes');
      winnew.focus();
    }else{//在main框架中显示
      //parent.document.all.main.src = obj[0];
       //:前是标题

      if(href!=""){//添加窗口
        href2="";
        if(obj[1]!=null && obj[1]!=""){
          href2= obj[1];
        }
        parent.addFrame(href,title,href2);
      }
    }
  }
  if(obj[1]!=null && obj[1]!=""){
     if(parent.document.all.left_frame.src!= obj[1]){
      parent.document.all.left_frame.src=obj[1];
    }
  }
}
//主菜单
function openTop(url){
  //alert('dd');
  var obj=new Array();
  obj=url.split(",");
  if(obj[0]!=null && obj[0]!=""){
    //退出主框架
    href=obj[0];//alert(href);
    index=href.indexOf(':');
    title=href.substring(0,index);
    href=href.substring(index+1);
    if(href.indexOf("windowTop")>=0){
      if(confirm('确定要退出系统?')){
        window.top.location = href;
      }
    }else{//在main框架中显示
      //parent.document.all.main.src = obj[0];
      //:前是标题
      if(href!=""){
         href2="";
        if(obj[1]!=null && obj[1]!=""){
          href2= obj[1];
        }
        parent.addFrame(href,title,href2);
      }
    }
  }
  if(obj[1]!=null && obj[1]!=""){
    if(parent.document.all.left_frame.src!= obj[1]){
      parent.document.all.left_frame.src=obj[1];
    }
  }
}
</script>

JavaScript 弹窗(Popup Windows) 在互联网时代,弹窗是一种常见的交互方式。它可以用于显示重要信息、广告、登录表单等。可以吸引用户注意可以提供重要信息可以提高用户参与度可能会影响用户体验可能会被用户屏蔽本章将介绍如何使用 JavaScript 打开弹窗。如何使用方法打开弹窗如何设置弹窗特性如何阻止弹窗​本章介绍了如何使用 JavaScript 打开弹窗。我们学习了方法的用法,以及如何设置弹窗特性。我们还学习了如何阻止弹窗。尝试使用方法打开一个新窗口,并将其定位在屏幕的中心。尝试使用。 阅读详情

相关推荐

window.popup

 var pop;function createTipWindow(){ pop=window.createPopup(); var pbody=pop.document.body; pbody.style.backgroundColor="#f0f8ff";

cqin的专栏 633

PopupWindow解释

popup:弹出window:界面。 PopupWindow:用来在Activity上弹出界面。 使用场景是,要在当前Activity上弹出其他界面的时候,需要用到它。 接下来认识下PopupWindowPopupWindow的构造函数为 public PopupWindow(View contentView, int width, int height, boolean fo

程序猿的玻璃心的专栏 1096

最实用最全悬浮Popup 拖动、跟随窗口移动、居中弹出、实时尺寸比例调整、不折叠关闭、截断显示、输入焦点

Popup悬浮窗 拖动 跟随窗口移动 居中 实时 比例调整 文本输入框获取焦点

qq_20758141的博客 4510

JavaScript教程:深入理解Popup窗口与窗口方法

Popup窗口(弹出窗口)是浏览器中一种传统的显示额外内容的方式。通过JavaScript的`window.open()`方法,开发者可以在新窗口或新标签页中打开指定的URL内容。虽然现代Web开发中更常使用AJAX动态加载内容,但Popup窗口在某些场景下仍然有其独特价值。 ## Popup窗口的现代应用场景 尽管Popup窗口技术较为古老,但在以下场景中仍然被广泛使用: 1. **第三方...

gitblog_00722的博客 449

window.createPopup()用法以及短消息提示框代码

一、在做一个portal项目时,用户要求在门户首页上的待办信息要有明确的提示,且在浏览器最小化的情况下,当有新的待办信息时,也要做提示。用了alert方法、或者用div的方法都很难实现“在浏览器最小化的情况下弹出提示信息”。alert方法会把信息弹出在桌面的正中央,同时会被其它窗口挡住。用div的方法实现的提示框会依赖于父窗口,因为它本身就是html页面上的一部分。最后发现,用window.cre

C# 1584

Windows 8中的Popup使用方式

一、我们认识Popup控件的IsLightDismissEnabled属性,这个属性设置为true的时候,点击非Popup控件外任何区域将关闭Popup。 <Button Content="弹出窗口一" Name="btn1" Width="108" Margin="161,96,0,0" VerticalAlignment="Top" H

cc465925590的专栏 758

window.open()方法(弹出层)

1, 最主要的弹出窗体代码    window.open('page.html'); 2, 经过设置后的弹出窗体    window.open('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no, l...

weixin_34306676的博客 420

JS的window.createPopup()学习

function OpenShortcutMenu( domObj ){var pop = window.createPopup();var popBody = pop.document.body;popBody.innerHTML = "Testing..."pop.show(window.event.x, 76, 140,200, document.body);}(1)var pop 变量:p

D-Y-W-DIY-? 1658

javascript---window.createPopup

在Web上使用菜单可以极大地节约页面的空间,同时也比较的符合用户从Windows上继承下来的UI操作体验。在以往的Web页菜单设计中,我们 普遍使用div嵌套table的方式来实现菜单,这样的菜单有个最致命的问题就是会被覆盖。我们为了解决这个问题,有时我们 干脆在显示图层菜单的同时隐藏页面上的所有下拉列表框,在菜单消失的时候,再显示他们。这个方法虽然可以解决问题,而其优化过后还可以只隐藏和下拉列表

Simplicity is more complicated than you think 6037

HTML表单底层协议解析:从成功控件到multipart编码

HTML表单是Web最基础的通信机制,其本质是一套浏览器与服务器间约定的数据提交协议,涵盖语义定义、编码规则(application/x-www-form-urlencoded和multipart/form-data)、HTTP方法语义(GET/POST)及安全边界。理解‘成功控件’筛选逻辑与enctype编码差异,是解决字段丢失、文件乱码、Model Binding失败等高频问题的关键。该协议独立于JavaScript和前端框架,构成所有现代表单库(如React Hook Form、Vue UseForm

世范水晶 713

PopUpWindow使用详解(一)——基本使用

前言:不要嫌前进的慢,只要一直在前进就好。 相关文章: 1、《PopUpWindow使用详解(一)——基本使用》 2、《PopUpWindow使用详解(二)——进阶及答疑》 有同学讲到想要知道PopUpWindow的知识,这里就给大家讲一讲PopUpWindow的基本用法和原理吧。这段时间博客可能会更新比较慢,因为你懂的 !!-_- ,往左看公告,嘿嘿。 先看一下我们要做的效果...

启舰 17万+

三种CSS方式实现弹出窗口(popup window

1. 使用display: flex;进行上下居中布局 在容器里面添加以下几行css语句 display: flex; justify-content: center; align-items: center; 注意: 设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。 <!DOCTYPE html> <html lang=...

莫小猪的菜鸟进阶路 1万+

PopupWindow的使用和封装

PopupWindow,顾名思义,就是弹窗,在很多场景下都可以见到它,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。 Android 中的弹窗基本有两种,一种是AlertDialog,另一种是PopupWindow**,AlertDialog的显示位置是固定的,PopWindow 的显示位置是我们可以设置和调整的**,因此,像项目中的一些场景如:某个功能的提...

qq_36699930的博客 797

弹出窗 的几种 PopupWindow

转载 首先我们先达成一个共识:Dialog、PopUpWindow、Toast等都属于子窗口,子窗口必须依附在父窗口上。 1.toast 没有任何交互的 提示窗  它永远不会获得焦点,无法被点击, 2.dialog    https://blog.csdn.net/eclothy/article/details/39340657 dialog没法设置宽为整个屏幕宽, 总是有点边界, ...

一站到底s的博客 3437

PopupWindow使用竟然如此简单!

前言:在日常的开发中,经常会有弹框的操作。而实现弹框有两种选择,那就是PopupWindow或者Dialog,相信大家使用Dialog的更多一些,但是这里我推荐使用PopupWindow,因为AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManager参数来改变位置)。而PopupWindow是可以指定显示位置的,所以更加的灵活,是可以适应复杂...

一枚善良的程序缘 2908

PopupWindow弹出窗体的具体实现

首先简单介绍一下popupWindowpopupWindow弹出窗体是可以在任意位置弹出窗体,而对话框只能出现屏幕最中间,这是popupWindow的优点。 之后介绍一下如何构建一个popupWindow: (1)先写构造方法: (2)之后再写popupWindow必须要设置的三大属性,分别是:宽,高和布局视图 (3)使用显示方法将popupWindow显示出来 showAsDropDown...

weixin_45189502的博客 1372

笔记:通用PopupWindow

通用PopupWindow,几行代码搞定PopupWindow弹窗我们都知道,Android 中的弹窗基本有两种,一种是AlertDialog,另一种是PopupWindow,AlertDialog的显示位置是固定的,PopWindow 的显示位置是我们可以设置和调整的,因此,像项目中的一些场景如:某个功能的提示说明、点击按钮在按钮上方或者下方弹出菜单、新功能弹窗引导等。由于这些弹窗的位置不固定,因

qq_16065163的博客 598
上一篇: 不要一辈子靠技术生存
下一篇: JAVA读写ORCALE CLOB字段
NYLR
博客等级 码龄22年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值