JS控制弹出悬浮窗口(一览画面)的实例代码


Posted in Javascript onMay 30, 2016

在web项目开发中经常遇到在一览画面中用户需要查看某一条记录的详细信息。如果用迁移画面的方式处理,速度会比较慢,而且用户体验不是太好。如果采用点击该条记录的详细链接时弹出一个层显示在当前画面的话,处理速度很快,而且用户感觉也比较新颖。下面我以某个对日电子商务网站为实例说明下它的实现方式。

1、jsp页面上弹出层的代码

<!-- 物流详情弹出页面 start --> 
<s:iterator value="lrVo" var="lrVo" id="lrVo" status="st"> 
<div class="logisticscenter_xq" style="display: none;" id='<s:property value="#lrVo.logisticNO"/>'> 
<dl> 
<dt><strong><s:text name="struts.webui.logistics.label.logisticsDetails"/>:</strong></dt> 
<dd><strong class="close_wind">X</strong></dd> 
</dl> 
<div class="information logistics_win"> 
<table width="" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td class="r_text"><span class="icon9">*</span><s:text name="struts.webui.logistics.label.logisticsNumber"/>:</td> 
<td></td> 
<td colspan="3" id="logisticNo"><s:property value="#lrVo.logisticNO"/></td> 
</tr> 
<tr> 
<td valign="top" class="r_text"><span class="icon9">*</span><s:text name="struts.webui.logistics.label.distribution"/>:</td> 
<td></td> 
<td colspan="3" style="text-align:left" id="content"><s:property value="#lrVo.content" escape="false"/></td> 
</tr> 
</table> 
</div> 
</div> 
</s:iterator> 
<!--物流详情弹出窗口 end-->

层样式代码:

.logisticscenter_xq{ 
position: absolute; 
width:710px; 
border:solid 2px #787878; 
background: #edfcfe; 
z-index: 2; 
}

我的处理时将弹出层放置到整个网站页面的layout.jsp,网站中所有页面的布局都继承它。该网站采用tiles框架统一对页面布局。

2、计算对象居中要设置的left值和top值

我把这一步要完成的功能写成一个js文件,主要是根据用户在一览页面上鼠标点击的坐标位置,动态地显示该条记录的层窗口。主要代码如下:

// 计算对象居中需要设置的left和top值 
// 参数: 
// _w - 对象的宽度 
// _h - 对象的高度 
function getLT(_w,_h) 
{ 
var de = document.documentElement; 
// 获取当前浏览器窗口的宽度和高度 
// 兼容写法,可兼容ie,ff 
var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; 
var h = (de&&de.clientHeight) || document.body.clientHeight; 
// 获取当前滚动条的位置 
// 兼容写法,可兼容ie,ff 
var st= (de&&de.scrollTop) || document.body.scrollTop; 
var topp=0; 
if(h>_h) 
topp=(st+(h - _h)/2); 
else 
topp=st; 
var leftp = 0; 
if(w>_w) 
leftp = ((w - _w)/2); 
// 左侧距,顶部距 
return [leftp,topp]; 
} 
//获取鼠标位置GetPostion 
function GetPostion(e) { 
var x = getX(e); 
var y = getY(e); 
} 
function getX(e) { 
e = e || window.event; 
return e.pageX || e.clientX + document.body.scrollLeft - document.body.clientLeft 
} 
function getY(e) { 
e = e|| window.event; 
return e.pageY || e.clientY + document.body.scrollTop - document.body.clientTop 
} 
//判断浏览器类型 
function getOs() 
{ 
var OsObject = ""; 
if(navigator.userAgent.indexOf("MSIE")>0) { 
return "MSIE"; 
} 
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
return "Firefox"; 
} 
if(isSafari=navigator.userAgent.indexOf("Safari")>0) { 
return "Safari"; 
} 
if(isCamino=navigator.userAgent.indexOf("Camino")>0){ 
return "Camino"; 
} 
if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){ 
return "Gecko"; 
} 
}

将该js包含到主调用的一览jsp文件中。

<script language="javascript" type="text/javascript" src="<s:url value="/js/aligncenter.js"/>"></script>

3、一览jsp中的调用方法

<a class="view_button" onclick="viewLogistics(event,'<s:property value="#lrVo.logisticNO"/>')" href="####"><s:text name="struts.webui.logistics.label.view"/></a>

用户点击该行记录的详情链接时调用显示层的方法,同时将该记录的id值传给调用方法。其实,每一个层就是用这条记录的一个id属性值进行区分的。

function viewLogistics(event,logisticNO){ 
var os = getOs(); 
var y = getY(event); 
if(os=='MSIE'){ 
y=window.event.y+405; 
} 
$(".logisticscenter_xq").hide(); 
$("#"+logisticNO).show(); 
$("#"+logisticNO).css("top",y+15); 
}

至于方法中event参数的作用,还不是太清楚,这点需要再调查一下。最终效果如下图,随着鼠标下移,层能够动态的移动。

JS控制弹出悬浮窗口(一览画面)的实例代码

以上所述是小编给大家介绍的JS控制弹出悬浮窗口(一览画面)的实例代码,希望对大家有所帮助,如果大家想了解更多资讯请关注三水点靠木网站!

Javascript 相关文章推荐
js中哈希表的几种用法总结
Jan 28 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
JS代码实现table数据分页效果
May 26 Javascript
JavaScript中数组slice和splice的对比小结
Sep 22 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
Nov 29 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
帝国cms首页列表页实现点赞功能
Oct 30 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
May 29 Javascript
VUE Elemen-ui之穿梭框使用方法详解
Jan 19 Javascript
限制复选框最多选择项的实现代码
May 30 #Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
May 30 #Javascript
JS组件Bootstrap Table使用实例分享
May 30 #Javascript
Bootstrap table分页问题汇总
May 30 #Javascript
浅析Javascript中bind()方法的使用与实现
May 30 #Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 #Javascript
深入理解JavaScript中的call、apply、bind方法的区别
May 30 #Javascript
You might like
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
书法兴趣小组活动总结
2014/07/07 职场文书
入伍通知书
2015/04/23 职场文书
合理化建议书范文
2015/09/14 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python