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 相关文章推荐
几个javascript操作word的参考代码
Oct 26 Javascript
js 函数调用模式小结
Dec 26 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
Apr 13 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
详解Vue Cli浏览器兼容性实践
Jun 08 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 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
php静态文件返回304技巧分享
2015/01/06 PHP
PHP中串行化用法示例
2016/11/16 PHP
smarty模板数学运算示例
2016/12/11 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python打印斐波拉契数列实例
2015/07/07 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
应用电子技术专业个人求职信
2013/09/21 职场文书
智能电子应届生求职信
2013/11/10 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
2015年工会工作总结
2015/03/30 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
党员身份证明材料
2015/06/19 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript