ASP.NET+Ajax+Javascript實現頁面定次刷新滾動內容

一、概述

  Marquee:Html中滾屏控件,可以使包含在此標記中的內容進行各個方向,各種速度的滾動,因此在不考慮使用第三方控件的前提下,考慮使用Marquee+xmlhttp來實現定次更新頁面中的滾動內容,此實現在IE6.0及以上版本測試通過,其他瀏覽器暫時未測試過。

  Marquee中的onfinish事件:在給Marquee屬性loop賦值後,完成這些次數時,會調用onfinish事件。

 

二、功能及特點

  1、Javascript通過Microsoft的MSXML對象,動態獲取後臺數據庫數據;

  2、Javascript解析MSXML對象中的xml內容,整理爲html後,顯示給用戶;

  3、通過配置文件Config.xml中的參數,可以修改Marquee的滾動速度、每筆數據的滾動次數、延時、Marquee的高度、滾動方向、鼠標懸停是否定製滾動等。

 

三、前臺Html

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmClearance.aspx.cs" Inherits="DynamicShow_FrmClearance" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>定次滾動示例</title>
    <link href="../DynamicShow/Css/StyleSheet.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" language="javascript" src="marquee.js"></script>
</head>
<body>
    <form id="FrmClearance" runat="server">
        <table id="BodyStyle" border="0px" width="100%">
            <tr>
                <td style="text-align: center; vertical-align: middle; font-family: 楷體_GB2312; font-size: 35px;
                    color: #0A246A; font-weight: bold; height: 160px">
                    <img src="./Image/CustomLog.jpg" /><br />
                    定 次 滾 動 示 例<br />
                </td>
            </tr>
            <tr>
                <td>
                    <div id="divMarquee" runat="server" style="width: 100%">
                    </div>
                </td>
            </tr>
        </table>

        <script language="javascript" type="text/javascript">
          //初始化參數
          InitMarqueeParameter("marquee_clearance");
          //獲取滾動數據
          GenerateScrolContent("marquee_clearance");
        </script>
    </form>
</body>
</html>

 

四、Config.xml配置文件

<?xml version="1.0" encoding="utf-8" ?>
<marquee>
  <marquee_clearance>
    <!--marquee滾動速度-->
    <marqueeSpeed>3</marqueeSpeed>
    <!--marquee滾動次數-->
    <scrolTimes>1</scrolTimes>
    <!--marquee延時-->
    <marqueeDelay>0.5</marqueeDelay>
    <!--marquee高度-->
    <marqueeHeight>530</marqueeHeight>
    <!--marquee滾動方向-->
    <marqueeDirect>up</marqueeDirect>
    <!--鼠標懸停是否定製滾動-->
    <marqueeStop>true</marqueeStop>
  </marquee_clearance>
</marquee>

 

 

五、Javascript實現

//滾動次數
var scrolTimes=2;
//marquee滾動速度
var marqueeSpeed=5;
//marquee延時
var marqueeDelay = 0.5;
//marquee高度
var marqueeHeight=600;
//marquee滾動方向
var marqueeDirect="up";
//鼠標懸停是否定製滾動
var marqueeStop="true";

/***************初始化參數***************/
function InitMarqueeParameter(marqueeType)
{
    try
    {
        var xmlDoc;
        if(window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async = false;
            xmlDoc.load("marqueeConfig.xml");
        }
           
        if(xmlDoc==null)
        {
            return;
            //alert('您的瀏覽器不支持xml文件讀取,於是本頁面禁止您的操作,推薦使用IE5.0以上可以解決此問題!');
        }
       
        var node;
        //marquee滾動速度
        node = xmlDoc.getElementsByTagName("marquee/"+marqueeType+"/marqueeSpeed");
        marqueeSpeed = parseInt(node[0].text);
        //marquee滾動次數
        node = xmlDoc.getElementsByTagName("marquee/"+marqueeType+"/scrolTimes");
        scrolTimes = parseInt(node[0].text);
        //marquee延時
        node = xmlDoc.getElementsByTagName("marquee/"+marqueeType+"/marqueeDelay");
        marqueeDelay = parseInt(node[0].text);
        //marquee高度
        node = xmlDoc.getElementsByTagName("marquee/"+marqueeType+"/marqueeHeight");
        marqueeHeight = parseInt(node[0].text);
        //marquee滾動方向
        node = xmlDoc.getElementsByTagName("marquee/"+marqueeType+"/marqueeDirect");
        marqueeDirect = node[0].text;
        //鼠標懸停是否定製滾動
        node = xmlDoc.getElementsByTagName("marquee/"+marqueeType+"/marqueeStop");
        marqueeStop = node[0].text;
    }
    catch(e)
    {
    }
}
/***************空值替換函數***************/
function IsNull(oldstring)
{
    if(oldstring == "")
        return "&nbsp;"
    else
        return oldstring;
}

/***************更新滾動內容***************/
function GenerateScrolContent(marqueeType)
{
    var oXMLDoc = new ActiveXObject('MSXML');
    oXMLDoc.url = "HandlerGetScrolContent.ashx?MarqueeType="+marqueeType;
    var oRoot=oXMLDoc.Root;
   
    if(oRoot.children == null)
        return;
       
    //設置Marquee各個參數
    var tablecontent = "<marquee id=/"mqMain/" direction=/""+marqueeDirect+"/" height=/""+marqueeHeight+"/" onfinish=/"GenerateScrolContent('"+marqueeType+"')/" onmouseout=/"this.start()/" loop=/""+scrolTimes+"/""+(marqueeStop == "true" ? "onmouseover=/"this.stop()/"":"")+" scrollamount=/""+marqueeSpeed+"/" scrolldelay=/""+marqueeDelay+"/">";
   
    if(marqueeType == "marquee_clearance")
    {
        //配置具體滾動內容
        tablecontent += "<table cellpadding=/"4/" cellspacing=/"0/" width=/"100%/"  class=/"clearance-table/">";
        for(var i=0;i<oRoot.children.length;i++)
        {
            var row=oRoot.children.item(i);
           
            if(i % 2 == 1)
                tablecontent += "<tr class=/"clearance-ScrolIntervalTr/">";
            else
                tablecontent += "<tr class=/"clearance-ScrolNormalTr/">";

            tablecontent +="<td nowrap width=/"40%/" class=/"clearance-ScrolTdStyle/">" + IsNull(row.GetAttribute("GATEJOB_NO")) + "</td>";
            tablecontent +="<td nowrap width=/"20%/" class=/"clearance-ScrolTdStyle/">" + IsNull(row.GetAttribute("STEP_NAME")) + "</td>";
            tablecontent +="<td nowrap width=/"20%/" class=/"clearance-ScrolTdStyle/">" + IsNull(row.GetAttribute("CAR_NO")) + "</td>";
            tablecontent +="<td nowrap width=/"20%/" class=/"clearance-ScrolTdStyle/">" + IsNull(row.GetAttribute("CAR_STATUS_NAME")) + "</td>";

            tablecontent +="</tr>";
        }
        tablecontent += "</table>";
    }
   
    tablecontent += "</marquee>";
    divMarquee.innerHTML=tablecontent;
}

 

六、樣式表

 略。

 

七、後臺數據獲取

 略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章