一直以来使用消息提示或者是滚动新闻都是使用iframe页面包含的方式, 今天早上闲来没事,把项目中的iframe模式的消息提示和滚动新闻给干掉换成了 目前流行使用的xmlhttp对象. 下面是一个使用例子.
首先建立一个新工程(示例使用vs2005)
建立default.aspx页面 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width: 522px; height: 352px">
<tr>
<td style="width: 50%">
测试区域1</td>
<td> 测试区域2</td>
</tr>
<tr>
<td>
测试区域3</td>
<td id="news">
</td>
</tr>
<tr>
<td>
测试区域4</td>
<td>
测试区域5</td>
</tr>
</table>
</div>
<script language="javascript">
function getXML(URL)
{
var xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{ // branch for IE/Windows ActiveX version
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",URL, false);
try {
xmlhttp.send();
var result = xmlhttp.status;}
catch(e) {return(false);}
if(result==200) {
return(xmlhttp.responseText);
}
delete(xmlhttp)
}
function setData()
{
try
{
var vpath = 'http://' + window.location.host;
var pathname = window.location.pathname;
pathname = pathname.substring(0,pathname.lastIndexOf('/'));
vpath += pathname;
vpath += '/loadnews.aspx?rm='+Math.random();
//alert(vpath);
document.getElementById('news').innerHTML = getXML(vpath);
}
catch(e)
{
alert('在获取数据时出错!');
}
}
setData();
window.setInterval("setData()", 120000);
</script>
</form>
</body>
</html>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width: 522px; height: 352px">
<tr>
<td style="width: 50%">
测试区域1</td>
<td> 测试区域2</td>
</tr>
<tr>
<td>
测试区域3</td>
<td id="news">
</td>
</tr>
<tr>
<td>
测试区域4</td>
<td>
测试区域5</td>
</tr>
</table>
</div>
<script language="javascript">
function getXML(URL)
{
var xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{ // branch for IE/Windows ActiveX version
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",URL, false);
try {
xmlhttp.send();
var result = xmlhttp.status;}
catch(e) {return(false);}
if(result==200) {
return(xmlhttp.responseText);
}
delete(xmlhttp)
}
function setData()
{
try
{
var vpath = 'http://' + window.location.host;
var pathname = window.location.pathname;
pathname = pathname.substring(0,pathname.lastIndexOf('/'));
vpath += pathname;
vpath += '/loadnews.aspx?rm='+Math.random();
//alert(vpath);
document.getElementById('news').innerHTML = getXML(vpath);
}
catch(e)
{
alert('在获取数据时出错!');
}
}
setData();
window.setInterval("setData()", 120000);
</script>
</form>
</body>
</html>
default.aspx.cs部分没有任何 额外代码就不贴了.
然后建立一个 loadnews.aspx页面
loadnews.aspx 界面只保留下面一行
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="loadnews.aspx.cs" Inherits="loadnews" %>
loadnews.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class loadnews : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<marquee behavior="scroll" scrolldelay="80" scrollamount="5" onMouseOver="this.stop()" onMouseOut="this.start()"> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻1</a> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻2</a> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻3</a> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻4</a>");
sb.Append("</marquee> ");
Response.Write(sb.ToString());
//sb.Append("<bgsound src='wav/newMessage.wav' border='0'>"); //也可以加入声音作为消息提示.
}
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class loadnews : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<marquee behavior="scroll" scrolldelay="80" scrollamount="5" onMouseOver="this.stop()" onMouseOut="this.start()"> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻1</a> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻2</a> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻3</a> ");
sb.Append("<a href="default.aspx" target="_blank">测试新闻4</a>");
sb.Append("</marquee> ");
Response.Write(sb.ToString());
//sb.Append("<bgsound src='wav/newMessage.wav' border='0'>"); //也可以加入声音作为消息提示.
}
}
OK. 浏览default.aspx试试..
本文介绍了一种使用XMLHTTP对象替换IFrame的方法,通过实时更新DOM实现消息提示和滚动新闻的功能,展示了具体实现步骤和代码示例。
5953

被折叠的 条评论
为什么被折叠?



