51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1450|回复: 0

frameset框架弹出层

[复制链接]

该用户从未签到

发表于 2018-6-20 15:57:09 | 显示全部楼层 |阅读模式
  前段时间做项目,有个功能是消息提醒。 我相信很多大牛都做过。下面来分享我遇到的问题和解决方案。

     首先我们的项目是用frameset框架,main代码。

<frameset name="myFrame" cols="85,*" frameborder="no" border="0" framespacing="0">
    <frame src="${base}/left.jsp" name="leftFrame" frameborder="no" scrolling="auto" noresize="noresize"
id="leftFrame" />   
    <frame src="${base}/welcome.jsp" name="mainFrame"   frameborder="no" scrolling="auto"  noresiz
e="noresize"
id="mainFrame" />
</frameset>
  这样分了左右两个部分。

   要求是无论在哪个页面当点击消息图标的时候。能再右下角弹出消息提示。

   这个我还真没做过。当时查阅了很多的资料。然后先是找到了jquery的message插件。后来又找到了如何
操作父框架的js,然后这个问题就解决了。

   因为我left.jsp是菜单导航。它是不变的。所以我就把消息图标放在了left中。

  left.jsp页面中的js函数:

function openMsg(msgType){
    //调用父窗体的获取消息js
    window.parent.getMessage(msgType);
}
这是在left中的打开消息的js函数。msgType表示的是消息状态.

window.parent 功能:返回父窗口

注:如果窗口本身是顶层窗口,parent属性返回的是对自身的引用。

在框架网页中,一般父窗口就是顶层窗口,但如果框架中还有框架,父窗口和顶层窗口就不一定相同了。

那么用这个方法我们就能直接调用main的getMessage()函数了。

main中的getMessage()函数:

复制代码
  1. <p>function getMessage(msgType){</p><p>    /*$.messager.lays(width, height);</p><p>     *该方法主要用来定义弹出窗口的宽度和高度。</p><p>     */</p><p>    $.messager.lays(200, 150);</p><p>    var msg="无消息"</p><p>    if(msgType==1){</p><p>        msg="jqueryMessage新消息提醒";</p><p>    }else{</p><p>        msg="jqueryMessage已提醒消息";</p><p>    }</p><p>    /*$.messager.show(title,text,time);</p><p>     *该方法主要定义窗口显示的内容,以及窗口显示多长时间后进行隐藏。</p><p>     *如果使用默认的标题,则将title设置为0,另外title和text还可以设置为html内容进行显示。如果希望</p><p>用户点击弹窗的关闭按钮才关闭     </p><p>            *消息框,可将time设置为0。</p><p>     */</p><p>    $.messager.show("消息提醒",msg);</p><p>}</p><p></script></p>
复制代码

复制代码
还有$.messager.anim(type,speed);

该方法主要定义窗口以什么样的方式和速度呈现。

$.messager.anim("fade",1000); //以fadeIn的动画方式显示

$.messager.anim("show",1000); //以show的动画方式显示

那么,上面简单的介绍了下jquery的message插件中常用的几个方法

当然,要想使用我们就要在页面引入jquery.js和jquery.messager.js文件。

通过这么一组合,我们就完成了整个这套功能。





IE8 下正常运行。

附上整个源码:IE8弹出层下载

高版本IE和谷歌浏览器兼容运行方法(含源码):

由于jquer.messager 的弹出层是在body 追加的。但是在高版本浏览器里frameset和 body是不会同时显示的。

解决办法就是新建一个index.html,在这个页面用iframe引用frameset页面来解决:

+ View Code
在main.html要做改变:


  1. <p><script></p><p>    function getMessage(msgType){</p><p>    //调用父窗体的获取消息js</p><p>        window.parent.getMessage(msgType);</p><p>    }</p><p></script></p>
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-19 06:48 , Processed in 0.067958 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表