frameset框架彈出層


     前段時間做項目,有個功能是消息提醒。 我相信很多大牛都做過。下面來分享我遇到的問題和解決方案。

     首先我們的項目是用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"  noresize="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()函數:

function getMessage(msgType){
    /*$.messager.lays(width, height);
     *該方法主要用來定義彈出窗口的寬度和高度。
     */
    $.messager.lays(200, 150);
    var msg="無消息"
    if(msgType==1){
        msg="jqueryMessage新消息提醒";
    }else{
        msg="jqueryMessage已提醒消息";
    }
    /*$.messager.show(title,text,time);
     *該方法主要定義窗口顯示的內容,以及窗口顯示多長時間后進行隱藏。
     *如果使用默認的標題,則將title設置為0,另外title和text還可以設置為html內容進行顯示。如果希望用戶點擊彈窗的關閉按鈕才關閉     
            *消息框,可將time設置為0。
     */
    $.messager.show("消息提醒",msg);
}
</script>

還有$.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頁面來解決:

<script> 
	function getMessage(msgType){
    /*$.messager.lays(width, height);
     *該方法主要用來定義彈出窗口的寬度和高度。
     */ 
    $.messager.lays(200, 150);
    var msg="無消息"
    if(msgType==1){
        msg="jqueryMessage新消息提醒";
    }else{
        msg="jqueryMessage已提醒消息";
    }
    /*$.messager.show(title,text,time);
     *該方法主要定義窗口顯示的內容,以及窗口顯示多長時間后進行隱藏。
     *如果使用默認的標題,則將title設置為0,另外title和text還可以設置為html內容進行顯示。如果希望用戶點擊彈窗的關閉按鈕才關閉     
            *消息框,可將time設置為0。
     */
    $.messager.show("消息提醒",msg);

} 
</script> 
  
<body style="width:100%;height:100%;overflow: hidden;border:none;margin:0" > 
<iframe id="main_div_warp" src="main.html" style="width:100%;height:100%" frameBorder="0"></iframe> 
</body> 

在main.html要做改變:

<script>
    function getMessage(msgType){ 
    //調用父窗體的獲取消息js
        window.parent.getMessage(msgType);
    }
</script>

left.html不變

附上Google兼容源碼:高版點此下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM