最近在做一个浮动的QQ咨询的程序,没有思路,在网上找了好久,终于找到了一个例子。
代码如下:
一、JavaScript文件(存放在JavaScripts文件夹下):
var delta = 0.15
var collection;
function floaters() {
this.items = [];
this.addItem = function(id, x, y, content) {
document.write('<div id=' + id + ' style="z-index: 10; position: absolute; width:80px; height:30px; left:' + (typeof (x) == 'string' ? eval(x) : x) + '; top:' + (typeof (y) == 'string' ? eval(y) : y) + '">' + content + '</div>');
var newItem = {};
newItem.object = document.getElementById(id);
newItem.x = x;
newItem.y = y;
this.items[this.items.length] = newItem;
}
this.play = function() {
collection = this.items
setInterval('play()', 10);
}
}
function play() {
if (screen.width <= 800) {
for (var j = 0; j < collection.length; j++) {
collection[j].object.style.display = 'none';
}
return;
}
for (var i = 0; i < collection.length; i++) {
var followObj = collection[i].object;
var followObj_x = (typeof (collection[i].x) == 'string' ? eval(collection[i].x) : collection[i].x);
var followObj_y = (typeof (collection[i].y) == 'string' ? eval(collection[i].y) : collection[i].y);
if (followObj.offsetLeft != (document.body.scrollLeft + followObj_x)) {
var dx = (document.body.scrollLeft + followObj_x - followObj.offsetLeft) * delta;
dx = (dx > 0 ? 1 : -1) * Math.ceil(Math.abs(dx));
followObj.style.left = followObj.offsetLeft + dx;
}
if (followObj.offsetTop != (document.body.scrollTop + followObj_y)) {
var dy = (document.body.scrollTop + followObj_y - followObj.offsetTop) * delta;
dy = (dy > 0 ? 1 : -1) * Math.ceil(Math.abs(dy));
followObj.style.top = followObj.offsetTop + dy;
}
followObj.style.display = '';
}
}
var theFloaters = new floaters();
theFloaters.addItem('followDiv1', 400, 80, '<a href="#" target="_blank"> <a target="_blank" href="tencent://message/?uin=111111&Site=keyboli&Menu=yes"><img border="0" SRC="http://wpa.qq.com/pa?p=1:111111:4" alt="Q我吧"></a>顾问1<br /><br /><a target="_blank" href="tencent://message/?uin=222222&Site=keyboli&Menu=yes"><img border="0" SRC="http://wpa.qq.com/pa?p=1:222222:4" alt="Q我吧"></a>顾问3<br /><br /><a target="_blank" href="tencent://message/?uin=333333&Site=keyboli&Menu=yes"><img border="0" SRC="http://wpa.qq.com/pa?p=1:333333:4" alt="Q我吧"></a>顾问5');
theFloaters.addItem('followDiv2', 'document.body.clientWidth-480', 80, '<a href="#" target="_blank"> <a target="_blank" href="tencent://message/?uin=444444&Site=keyboli&Menu=yes"><img border="0" SRC="http://wpa.qq.com/pa?p=1:444444:4" alt="Q我吧"></a>顾问2<br /><br /><a target="_blank" href="tencent://message/?uin=555555&Site=keyboli&Menu=yes"><img border="0" SRC="http://wpa.qq.com/pa?p=1:555555:4" alt="Q我吧"></a>顾问4<br /><br /><a target="_blank" href="tencent://message/?uin=666666&Site=keyboli&Menu=yes"><img border="0" SRC="http://wpa.qq.com/pa?p=1:666666:4" alt="Q我吧"></a>顾问6');
theFloaters.play();
二、前台页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="QQMessage.aspx.cs" Inherits="ADTestProgram.QQMessage" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<script language="javascript" type="text/javascript" src="../JavaScripts/QQ.js">
</script>
</div>
</form>
</body>
</html>
注意:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">这段代码是一定要取消的,否则不能随页面滚动。
以下是我写的修改咨询QQ号码的程序。
一、前台页面:
<table style="font-family: 宋体; font-size: 10pt; background-color: #F4F4F4;">
<tr>
<td align="right">
QQ号:
</td>
<td align="left">
<asp:TextBox ID="txtQQ1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="txtQQ1" ErrorMessage="QQ号只能是数字!" Display="Dynamic"
ValidationExpression="^[0-9]*$"></asp:RegularExpressionValidator>
</td>
<td align="right">
QQ号:
</td>
<td align="left">
<asp:TextBox ID="txtQQ2" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server"
ControlToValidate="txtQQ2" ErrorMessage="QQ号只能是数字!" Display="Dynamic"
ValidationExpression="^[0-9]*$"></asp:RegularExpressionValidator>
</td>
<td align="right">
QQ号:
</td>
<td align="left">
<asp:TextBox ID="txtQQ3" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server"
ControlToValidate="txtQQ3" ErrorMessage="QQ号只能是数字!" Display="Dynamic"
ValidationExpression="^[0-9]*$"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="right">
QQ号:
</td>
<td align="left">
<asp:TextBox ID="txtQQ4" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator4" runat="server"
ControlToValidate="txtQQ4" ErrorMessage="QQ号只能是数字!" Display="Dynamic"
ValidationExpression="^[0-9]*$"></asp:RegularExpressionValidator>
</td>
<td align="right">
QQ号:
</td>
<td align="left">
<asp:TextBox ID="txtQQ5" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator5" runat="server"
ControlToValidate="txtQQ5" ErrorMessage="QQ号只能是数字!" Display="Dynamic"
ValidationExpression="^[0-9]*$"></asp:RegularExpressionValidator>
</td>
<td align="right">
QQ号:
</td>
<td align="left">
<asp:TextBox ID="txtQQ6" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator6" runat="server"
ControlToValidate="txtQQ6" ErrorMessage="QQ号只能是数字!" Display="Dynamic"
ValidationExpression="^[0-9]*$"></asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td colspan="6">
<asp:Button ID="btnSave" runat="server" Text="写 入" οnclick="btnSave_Click" Enabled="False" />
</td>
</tr>
</table>
二、后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ReadJavaScript();
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
ArrayList myArrayList0 = new ArrayList();
ArrayList myArrayList1 = new ArrayList();
if (txtQQ1.Text.Trim().Length == 0)
{
myArrayList0.Add("000000");
}
else
{
myArrayList0.Add(txtQQ1.Text.Trim().ToString());
}
if (txtQQ2.Text.Trim().Length == 0)
{
myArrayList0.Add("222222");
}
else
{
myArrayList0.Add(txtQQ2.Text.Trim().ToString());
}
if (txtQQ3.Text.Trim().Length == 0)
{
myArrayList0.Add("333333");
}
else
{
myArrayList0.Add(txtQQ3.Text.Trim().ToString());
}
if (txtQQ4.Text.Trim().Length == 0)
{
myArrayList0.Add("444444");
}
else
{
myArrayList0.Add(txtQQ4.Text.Trim().ToString());
}
if (txtQQ5.Text.Trim().Length == 0)
{
myArrayList0.Add("555555");
}
else
{
myArrayList0.Add(txtQQ5.Text.Trim().ToString());
}
if (txtQQ6.Text.Trim().Length == 0)
{
myArrayList0.Add("666666");
}
else
{
myArrayList0.Add(txtQQ6.Text.Trim().ToString());
}
myStreamReader = new StreamReader(Server.MapPath("~/JavaScripts/QQ1.js"), Encoding.GetEncoding("GB2312"));
while (myStreamReader.Peek() > 0)
{
string myStr1 = myStreamReader.ReadLine();
myArrayList1.Add(myStr1);
}
myStreamReader.Close();
myStreamWriter = new StreamWriter(Server.MapPath("~/JavaScripts/QQ1.js"), false, Encoding.GetEncoding("GB2312"));
for (int i = 0; i < myArrayList1.Count; i++)
{
string myStrShuZu=myArrayList1[i].ToString();
for (int j = 0; j < myArrayList0.Count; j++)
{
myStrShuZu = myStrShuZu.Replace(Model.Variable.myArrayList[j].ToString(), myArrayList0[j].ToString());
}
myStreamWriter.WriteLine(myStrShuZu);
}
myStreamWriter.Flush();
myStreamWriter.Close();
}
#region 查找JavaScript文件中的QQ号码,方法名:ReadJavaScript()
protected void ReadJavaScript()
{
Model.Variable.myArrayList = new ArrayList();
ArrayList myArrayList = new ArrayList();
myStreamReader = new StreamReader(Server.MapPath("~/JavaScripts/QQ1.js"), Encoding.GetEncoding("GB2312"));
string myStr = "";
while (myStreamReader.Peek() > 0)
{
string myStr1 = myStreamReader.ReadLine();
string myStr2 = "", myStr3 = "", myStr4 = "";
int aaa = myStr1.IndexOf("uin") + 4;
int bbb = myStr1.IndexOf("Site") - 1;
if (aaa > 0 && bbb > 0 && bbb > aaa)
{
myStr2 = myStr1.Substring(aaa, bbb - aaa).ToString();
myStr1 = myStr1.Substring(myStr1.IndexOf("Site") + 4, myStr1.Length - myStr1.IndexOf("Site") - 4).ToString();
int ccc = myStr1.IndexOf("uin") + 4;
int ddd = myStr1.IndexOf("Site") - 1;
if (ddd > 0 && ccc > 0 && ddd > ccc)
{
myStr3 = myStr1.Substring(ccc, ddd - ccc).ToString();
myStr1 = myStr1.Substring(myStr1.IndexOf("Site") + 4, myStr1.Length - myStr1.IndexOf("Site") - 4).ToString();
int eee = myStr1.IndexOf("uin") + 4;
int fff = myStr1.IndexOf("Site") - 1;
if (fff > 0 && eee > 0 && fff > eee)
{
myStr4 = myStr1.Substring(eee, fff - eee).ToString();
}
}
myStr += myStr2 + "," + myStr3 + "," + myStr4 + ",";
myArrayList.Add(myStr2);
myArrayList.Add(myStr3);
myArrayList.Add(myStr4);
Model.Variable.myArrayList.Add(myStr2);
Model.Variable.myArrayList.Add(myStr3);
Model.Variable.myArrayList.Add(myStr4);
}
}
myStreamReader.Close();
txtQQ1.Text = Model.Variable.myArrayList[0].ToString();
txtQQ2.Text = Model.Variable.myArrayList[1].ToString();
txtQQ3.Text = Model.Variable.myArrayList[2].ToString();
txtQQ4.Text = Model.Variable.myArrayList[3].ToString();
txtQQ5.Text = Model.Variable.myArrayList[4].ToString();
txtQQ6.Text = Model.Variable.myArrayList[5].ToString();
}
#endregion
我也感觉这样很繁琐,可是刚学B/S开发不久,不知道该怎么做才好,只好这样了。我是个新手,如果大家有更好的解决办法,希望大家不吝指教,在此先谢谢了。