我用js写了个广告程序,嵌在HTML中。遇到一些问题,请高手指教:
具体如下:
要求:1。可通过后台管理对JS修改。以实现对HTML页面关键字的更新。
2。要求其中链接每个页面同一IP在第一次点击为广告,以后为正文。广告被点次数为N(如100)次。以后不会出现。
如下。
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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language=javascript src="1.js"></script>
</head><body>
<div id=at_main>
<p>纸伞无标题文档无标题文档无标题文档无标题独自文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文希望希望档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无试独自|飘过|悠长标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标独自|飘过|悠长题文档无标题文档无标题文试独自|飘过|悠长验档无标题文档无标题文档无独自标* 参数说明:
* o: 对象, 要进行高亮显示的对象.
* flag: 字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 .
* rndColor: 布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示.
* url: URI, 是否对高亮的词添加链接.题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标希望希望题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题独自|飘过|悠长文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档测试数据
</p>
</div>
<script src="http://woocall.sina.com.cn/rls/stable.js" type="text/javascript"></script>
</body>
</html>js页如下:
//<![CDATA[
onload=function(){
fHl(document.body, '纸伞|测|参数');
// 这里的body是指高亮body里面的内容。
fHl(document.body, '希望|试', false, '/');
fHl(document.getElementById('at_main'), '独自|飘过|悠长', true, 'http://www.99ezu.com/');
// 这里的'at_main'是指高亮id='at_main'的div里面的内容。search.asp?keyword=指给关键字加的链接地址,我这里加了一个参数,在后面要用到。可以是任意的地址。
//上面这段,可以自己添加或减少。动易可以用文章内容的关键字。如{$Keyword},读取出来的内容如:|关键字|关键字|关键字|,所以得在{$Keyword}左边和右边各加一个指字的关键字,如“左边{$Keyword}右边”,这样才能正确高亮。
}
//<--
//COOKIES控制函数
function getCookieVal (offset)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie (name, value)
{
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function setLastlastVisitCookie ()
{
var rightNow = new Date();
var expdate = new Date();
expdate.setTime (expdate.getTime() + 1 * (24 * 60 * 60 * 1000)); //+1 day
SetCookie ("lastVisit", rightNow.getTime(), expdate, "/");
}
function ResetCookie()
{
SetCookie("lastVisit", 0, null, "/");
}
//同一ip只显示一次
// -->
var ads_url="http://bbs.99ezu.com/";
var bVisitedToday = false;
var lastVisit = GetCookie("lastVisit");
//COOKIES控制变量
/*----------------------------------------*\
* 使用 javascript HTML DOM 高亮显示页面特定字词 By shawl.qiu
* 参数说明:
* o: 对象, 要进行高亮显示的对象.
* flag: 字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 .
* rndColor: 布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示.
* url: URI, 是否对高亮的词添加链接.
\*----------------------------------------*/
//--------begin function fHl(o, flag, rndColor, url)------------------//
function fHl(o, flag, rndColor, url){
var bgCor=fgCor='';
if(rndColor){
bgCor=fRndCor(10, 20);
fgCor=fRndCor(230, 255);
} else {
bgCor='#aaa342';
fgCor='black';
}
//是否随机颜色
var re=new RegExp(flag, 'i');
for(var i=0; i<o.childNodes.length; i++){
var o_=o.childNodes[i];
var o_p=o_.parentNode;
//if(i==1)alert(o_p.nodeType);
//测试
if(o_.nodeType==1) {
fHl(o_, flag, rndColor, url);
} else if (o_.nodeType==3) {
if(!(o_p.nodeName=='A')){
if(o_.data.search(re)==-1)continue;
var temp=fEleA(o_.data, flag);
//临时对象
o_p.replaceChild(temp, o_);
}
} // shawl.qiu script
}
//控制关键字替换函数如下:
function fEleA(text, flag){
var style=' style="background-color:'+bgCor+';color:'+fgCor+';" '
var o=document.createElement('span');
var str='';
var re=new RegExp('('+flag+')', 'gi');
//***************判断页面是否已进入******************************
if (lastVisit != null)
{
lastVisit = 1 * lastVisit;
var lastHere = new Date(lastVisit);
var rightNow = new Date();
//alert(lastHere);
//lastHere存放上次访问时间
//rightNow存放本次访问时间
if(lastHere.getYear() == rightNow.getYear()&& lastHere.getMonth() == rightNow.getMonth()&& lastHere.getDate() == rightNow.getDate())
{
bVisitedToday = true;
}
} if(bVisitedToday == false)
{
setLastlastVisitCookie();
//替换开始
if(url){
str=text.replace(re, '<a href="'+ads_url+'"'+'>$1</a>'); //这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。
} else {
str=text.replace(re, '<span '+style+'>$1</span>'); //不加链接时显示
}
o.innerHTML=str;
return o;
}
//替换结束
else
{
//替换开始
if(url){
//str=text.replace(re, '<a href="'+ads_url+'"'+'>$1</a>');
str=text.replace(re, '<a href="'+url+'$1"'+style+'>$1</a>');
//这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。
} else {
str=text.replace(re, '<span '+style+'>$1</span>'); //不加链接时显示
}
o.innerHTML=str;
return o;
}
//替换结束
}
// shawl.qiu script
//------------------------------------------------
function fRndCor(under, over){
if(arguments.length==1){
var over=under;
under=0;
}else if(arguments.length==0){
var under=0;
var over=255;
}
var r=fRandomBy(under, over).toString(16);
r=padNum(r, r, 2);
var g=fRandomBy(under, over).toString(16);
g=padNum(g, g, 2);
var b=fRandomBy(under, over).toString(16);
b=padNum(b, b, 2);
//defaultStatus=r+' '+g+' '+b
return '#'+r+g+b;
function fRandomBy(under, over){
switch(arguments.length){
case 1: return parseInt(Math.random()*under+1);
case 2: return parseInt(Math.random()*(over-under+1) + under);
default: return 0;
}
} // shawl.qiu script
function padNum(str, num, len){
var temp=''
for(var i=0; i<len;temp+=num, i++);
return temp=(temp+=str).substr(temp.length-len);
} // shawl.qiu script
}
} // shawl.qiu script
//--------end function fHl(o, flag, rndColor, url)--------------------//
//]]>
问题是,如何实现:每个链接每个页面同一IP在第一次点击为广告,以后为正文。广告被点次数为N(如100)次
有兴趣高手可以共同研究,给点想法。
具体如下:
要求:1。可通过后台管理对JS修改。以实现对HTML页面关键字的更新。
2。要求其中链接每个页面同一IP在第一次点击为广告,以后为正文。广告被点次数为N(如100)次。以后不会出现。
如下。
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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language=javascript src="1.js"></script>
</head><body>
<div id=at_main>
<p>纸伞无标题文档无标题文档无标题文档无标题独自文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文希望希望档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无试独自|飘过|悠长标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标独自|飘过|悠长题文档无标题文档无标题文试独自|飘过|悠长验档无标题文档无标题文档无独自标* 参数说明:
* o: 对象, 要进行高亮显示的对象.
* flag: 字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 .
* rndColor: 布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示.
* url: URI, 是否对高亮的词添加链接.题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标希望希望题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题独自|飘过|悠长文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档无标题文档测试数据
</p>
</div>
<script src="http://woocall.sina.com.cn/rls/stable.js" type="text/javascript"></script>
</body>
</html>js页如下:
//<![CDATA[
onload=function(){
fHl(document.body, '纸伞|测|参数');
// 这里的body是指高亮body里面的内容。
fHl(document.body, '希望|试', false, '/');
fHl(document.getElementById('at_main'), '独自|飘过|悠长', true, 'http://www.99ezu.com/');
// 这里的'at_main'是指高亮id='at_main'的div里面的内容。search.asp?keyword=指给关键字加的链接地址,我这里加了一个参数,在后面要用到。可以是任意的地址。
//上面这段,可以自己添加或减少。动易可以用文章内容的关键字。如{$Keyword},读取出来的内容如:|关键字|关键字|关键字|,所以得在{$Keyword}左边和右边各加一个指字的关键字,如“左边{$Keyword}右边”,这样才能正确高亮。
}
//<--
//COOKIES控制函数
function getCookieVal (offset)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie (name, value)
{
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function setLastlastVisitCookie ()
{
var rightNow = new Date();
var expdate = new Date();
expdate.setTime (expdate.getTime() + 1 * (24 * 60 * 60 * 1000)); //+1 day
SetCookie ("lastVisit", rightNow.getTime(), expdate, "/");
}
function ResetCookie()
{
SetCookie("lastVisit", 0, null, "/");
}
//同一ip只显示一次
// -->
var ads_url="http://bbs.99ezu.com/";
var bVisitedToday = false;
var lastVisit = GetCookie("lastVisit");
//COOKIES控制变量
/*----------------------------------------*\
* 使用 javascript HTML DOM 高亮显示页面特定字词 By shawl.qiu
* 参数说明:
* o: 对象, 要进行高亮显示的对象.
* flag: 字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 .
* rndColor: 布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示.
* url: URI, 是否对高亮的词添加链接.
\*----------------------------------------*/
//--------begin function fHl(o, flag, rndColor, url)------------------//
function fHl(o, flag, rndColor, url){
var bgCor=fgCor='';
if(rndColor){
bgCor=fRndCor(10, 20);
fgCor=fRndCor(230, 255);
} else {
bgCor='#aaa342';
fgCor='black';
}
//是否随机颜色
var re=new RegExp(flag, 'i');
for(var i=0; i<o.childNodes.length; i++){
var o_=o.childNodes[i];
var o_p=o_.parentNode;
//if(i==1)alert(o_p.nodeType);
//测试
if(o_.nodeType==1) {
fHl(o_, flag, rndColor, url);
} else if (o_.nodeType==3) {
if(!(o_p.nodeName=='A')){
if(o_.data.search(re)==-1)continue;
var temp=fEleA(o_.data, flag);
//临时对象
o_p.replaceChild(temp, o_);
}
} // shawl.qiu script
}
//控制关键字替换函数如下:
function fEleA(text, flag){
var style=' style="background-color:'+bgCor+';color:'+fgCor+';" '
var o=document.createElement('span');
var str='';
var re=new RegExp('('+flag+')', 'gi');
//***************判断页面是否已进入******************************
if (lastVisit != null)
{
lastVisit = 1 * lastVisit;
var lastHere = new Date(lastVisit);
var rightNow = new Date();
//alert(lastHere);
//lastHere存放上次访问时间
//rightNow存放本次访问时间
if(lastHere.getYear() == rightNow.getYear()&& lastHere.getMonth() == rightNow.getMonth()&& lastHere.getDate() == rightNow.getDate())
{
bVisitedToday = true;
}
} if(bVisitedToday == false)
{
setLastlastVisitCookie();
//替换开始
if(url){
str=text.replace(re, '<a href="'+ads_url+'"'+'>$1</a>'); //这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。
} else {
str=text.replace(re, '<span '+style+'>$1</span>'); //不加链接时显示
}
o.innerHTML=str;
return o;
}
//替换结束
else
{
//替换开始
if(url){
//str=text.replace(re, '<a href="'+ads_url+'"'+'>$1</a>');
str=text.replace(re, '<a href="'+url+'$1"'+style+'>$1</a>');
//这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。
} else {
str=text.replace(re, '<span '+style+'>$1</span>'); //不加链接时显示
}
o.innerHTML=str;
return o;
}
//替换结束
}
// shawl.qiu script
//------------------------------------------------
function fRndCor(under, over){
if(arguments.length==1){
var over=under;
under=0;
}else if(arguments.length==0){
var under=0;
var over=255;
}
var r=fRandomBy(under, over).toString(16);
r=padNum(r, r, 2);
var g=fRandomBy(under, over).toString(16);
g=padNum(g, g, 2);
var b=fRandomBy(under, over).toString(16);
b=padNum(b, b, 2);
//defaultStatus=r+' '+g+' '+b
return '#'+r+g+b;
function fRandomBy(under, over){
switch(arguments.length){
case 1: return parseInt(Math.random()*under+1);
case 2: return parseInt(Math.random()*(over-under+1) + under);
default: return 0;
}
} // shawl.qiu script
function padNum(str, num, len){
var temp=''
for(var i=0; i<len;temp+=num, i++);
return temp=(temp+=str).substr(temp.length-len);
} // shawl.qiu script
}
} // shawl.qiu script
//--------end function fHl(o, flag, rndColor, url)--------------------//
//]]>
问题是,如何实现:每个链接每个页面同一IP在第一次点击为广告,以后为正文。广告被点次数为N(如100)次
有兴趣高手可以共同研究,给点想法。
有好的方法吗??