监听当前页面某一部分超链接单击事件,事件触发后传一个值给当前超链接url,怎样实现? 楼主是想给链接加个校验码用来确认点击的有效性?由于你的“指定的值”是要后台校验的,也就是说前台页面生成的时候,这个值必须也同时生成到页面上,所以保存在什么位置都无所谓了,有心人肯定能找出来,因此,与其监听点击事件再附加参数还不如直接就写在生成的URL上…… 你只要确保校验值的唯一性和时效性就没什么问题了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的超链接是怎么读出来的?把超链接统一指向一个页面如:redirect.aspx?url=http://www.sina.com.cn在redirect.aspx里获取url …… 直接写出来,再让人点击和让人先点击再附加到链接上有区别吗?……楼主非要这么隐蔽的话,可以在生成DataList时给每个链接都绑定onclick事件(如):<a onclick="setUrl(this)" href="xxx.aspx">xxx</a><script language=JavaScript>function setUrl(elm){ elm.href += "?id=123";}</script>判断一下“xxx.aspx”、“xxx.aspx?”、“xxx.aspx?type=1”、“xxx.aspx?type=1&”之类的情况完成附加参数就是了 如果是后台实现,在用户已登陆的状态下~ 不用附加用户ID也能记录是谁访问了页面;(非要附加的话,你的DataList不也是后台生成的么,生成链接时把用户ID也加上就是了[不要说你无法获取用户ID])如果是只有前台实现(身份信息在cookie里),就只能在前台附加。不过有完全基于前台的身份验证系统么? 1、每次访问都记录一次并不会给数据库带来多大的压力~ 不过就是多一次存储而已,可比你读取商品类别、数据等要简单的多,九牛一毛都不到。(站点计数器都得每页记录访问)反正你都要读取数据库判断是否已经访问过当前页,只要判断是否是在一段时间内的首次访问就是了,记不记录重复访问就看你的记录规则了。(有效间隔时间~ 你可以以一天算)----------------------------------------------------A. 数据库链接池的上限是7,如果同时有20万人在访问,你敢保证连接池100%不会达到上限?B. 如果每天都会新增200万条新数据,那么想想吧,我们该投入多少硬件来保存怎么庞大的数据量?我现在考虑的不是服务器内存的问题,我考虑的是I/O管道是否被占满,以及数据量庞大查询和管理起来不方便。2、凡有用户系统的网站,在页面载入时,总要先检查一下用户登录状态吧……这不就是知道是谁正在访问这个页面了么…… -_-b----------------------------------------------------我只知道谁在访问这个网站,不能知道谁在访问这个页面。因为一个页面有无数种显示,ProductList.aspx?Id=1ProductList.aspx?Id=2ProductList.aspx?Id=3....等等你只知道用户在看ProductList.aspx,但不知道他在看那一个ID,请问你应不应该记录一下呢? 1、A:如果真的能达到上限,那就该恭喜你了,你可以升级硬件系统了。(这么大的访问量就不必死守着原来的配置,效益也该早就有了)B:我说的每次访问都记录并不意味着每次访问都会增加一条记录,比如:可以把访问记录设计成: Id url count userId day 1 ProductList.aspx?Id=21 1 001 2007-03-13 2 ProductList.aspx?Id=8 3 001 2007-03-13这样就可以记录,每个页面都增加一个访问计数就可以记录所有的访问;当然你也可以不要这个计数字段,只要检查库中是否已存在该页面的记录就行了,有就可以不记录了。(ps:每次访问都记录可不是我说的,我不过顺着你的说法评论一下而已,而且每次访问页面都获取用户ID和每次访问都记录是两回事,你即使是用url传值不也同样要检查是否已经记录过了么,所以就算每次都记录也不过是多一次数据更新而已,你还可以把记录操作都封装在一个存储过程里面,这样一次更新操作就几乎可以忽略)如果你要提高数据库效率,应该尽量减少数据库和网站后台程序的交互,把数据库操作(包括一些固定的逻辑规则)都写到存储过程里,再花点时间做做优化。2、当你获取页面请求的URL时,取得的是完整的url,包括参数部分……当然,如果你只需要用某个Id来区别的话,那就获取相应的参数就是,这个和你原先设想的获取URL里的用户ID不是一回事么~(就等于我所说的直接写在url上)……当然,现在用户ID就不必写在上面了,因为可以在后台直接获取而不必用url传递。 1A:RMB啊~~~都是吝啬鬼~ 在赚钱也不肯换硬件。B:你这样做成一张表又要占用服务器资源了,这肯定是不可取的。记录用户ID那肯定是要记录的。2如果你不获取用户ID,而直接获取Url的参数,我还是搞不明白你是如何理解成是一回事。就好像每天都有很多人坐车到我的公司来买东西,而我不记录这个用户的联系方式,而直接记录汽车的型号,我是如何知道谁乘坐那辆汽车呢? 哪管那么复杂?本质上不就是打算某个链接被点击的时候能够对发送的URL做改动嘛。楼主参考下面的方式就是了。function SetAhref(Item){ Item.href += "?param=" + "ParamValue";}<td> <div align="center"><a href="www.abc.com/index.htm" onClick="SetAhref(this)">链接文字</a></div></td> …… 做访问记录还能不用独立表的 -_-b如果你觉得记录URL太占空间,只记录特殊的ID即可(能满足需求就行)这不是你原先设定的“说明该页面被访问过一次”么,不过要都能用Id来确定那就记Id吧……至于获取Url的参数,我也是顺着你前面的需求嘛,“就传一个值加到该超链接的Url的后面”这个到后台不就得同样“获取Url的参数”么;用户Id是肯定要获取的,可以在后台直接获取(类似登录验证)页面特定的Id信息也是要获取的,直接获取Url的参数如果用户Id是附加在Url上面的,那么也要以“获取Url的参数”的方式来获取(这应该是你最先想要的吧)这就要看楼主的后台是否可以知道“现在正在请求(访问)这个页面的人是谁(Id)?”,还是只能反馈“现在正在请求的URL上包含的用户Id是否在用户库里?”;前者就是说可以在后台获取当前登录用户的Id,而后者则是后台没有登录状态记录只能校验传来的Id是否合法;所以前者就可有用作用户访问记录,而后只能用来“查询用户是否存在”可用于“推荐人系统”之类的…… 不知道我看明白你的意思没有,你的要求貌似是这样的,你另存下面代码试试,看合你要求不?1、像上面有人说的,一开始在链接标签里加个onclick事件,用于你加参数处理 缺点:如果页面多,链接多。要一个个添加,麻烦2、可以遍历你指定DataList里的连接,在onclick事件上加上你的函数9attachEvent)3、如下代码,跟第2条有些类似,这个只是遍历少点<script>document.onclick = function(){ var objParent = document.getElementById("tabTest"); var obj = window.event.srcElement ; if(obj && obj.tagName.toUpperCase()=="A"){ for(var i = 0; i < objParent.all.length; i++){ if(objParent.all(i)==obj){ if(obj.href.indexOf("?")<0) obj.href+="?" else obj.href+="&" obj.href+="p=冷风工作室" } } } return true;}</script><body>这里有dkdkdlsldldld<a href="http://www.google.com/search?q=net205">测试链接</a><table width="100%" border="0" id="tabTest" name="tabTest"> <tr> <th width="15%" height="25">序号</th> <th width="47%">标题</th> <th width="19%">作者</th> <th width="19%">时间</th> </tr> <tr> <td align="center">1</td> <td><a href="http://community.csdn.net/index.aspx?tt=332">11111</a></td> <td align="center">aaaaa</td> <td align="center">2007-3-14</td> </tr> <tr> <td align="center">2</td> <td><a href="abc.asp">22222</a></td> <td align="center">addsd</td> <td align="center">2007-3-14</td> </tr> <tr> <td align="center">3</td> <td><a href="http://news.163.com/07/0314/03/39H17I7J000127FP.html">3333333</a></td> <td align="center">ddddd</td> <td align="center">2007-3-14</td> </tr> <tr> <td align="center">4</td> <td><a>4444</a></td> <td align="center">sssss</td> <td align="center">2007-3-14</td> </tr> <tr> <td align="center">5</td> <td><a href="abc.asp">55555</a></td> <td align="center">sssss</td> <td align="center">2007-3-14</td> </tr></table><table width="100%" border="0" id="tabTest2" name="tabTest2"> <tr> <td><a href="http://news.163.com/07/0314/03/39H17I7J000127FP.html">另一个测试实例</a></td> </tr></table><p>dsdadasdsd</p></body> 用Session保存当前页面的Url,每次加载页面判断当前Url是否等于上一次的Url,如果相等就是重复访问了同一超链接,否则就不是。如果是重复访问,就不操作数据库,反之亦然。 图片编辑 extjs 不同组件,调用方法Ext.getCmp('id'); 求一个开发JavaScript的IDE环境 全屏问题 ,求救!!!!!在线等。 js判断页面是刷新还是关闭 求一函数?(简单) 200分! 菜单的问题 如何才能打印指定的地方呢(即打印局部) 哪里可以找到javascript对象的属性和方法集合,就是类似java的API的东西????JavaScript的开发环境用什么????请大侠出手相助 关于javascript的问题,困扰我好长时间了 onmouseover/out与div的问题 求一函数,是关于select选值决定其他控件是否可见的代码
把超链接统一指向一个页面如:redirect.aspx?url=http://www.sina.com.cn
在redirect.aspx里获取url
直接写出来,再让人点击和让人先点击再附加到链接上有区别吗?……楼主非要这么隐蔽的话,可以在生成DataList时给每个链接都绑定onclick事件(如):
<a onclick="setUrl(this)" href="xxx.aspx">xxx</a>
<script language=JavaScript>
function setUrl(elm)
{
elm.href += "?id=123";
}
</script>判断一下“xxx.aspx”、“xxx.aspx?”、“xxx.aspx?type=1”、“xxx.aspx?type=1&”之类的情况完成附加参数就是了
(非要附加的话,你的DataList不也是后台生成的么,生成链接时把用户ID也加上就是了[不要说你无法获取用户ID])如果是只有前台实现(身份信息在cookie里),就只能在前台附加。不过有完全基于前台的身份验证系统么?
反正你都要读取数据库判断是否已经访问过当前页,只要判断是否是在一段时间内的首次访问就是了,记不记录重复访问就看你的记录规则了。(有效间隔时间~ 你可以以一天算)
----------------------------------------------------
A. 数据库链接池的上限是7,如果同时有20万人在访问,你敢保证连接池100%不会达到上限?
B. 如果每天都会新增200万条新数据,那么想想吧,我们该投入多少硬件来保存怎么庞大的数据量?
我现在考虑的不是服务器内存的问题,我考虑的是I/O管道是否被占满,以及数据量庞大查询和管理起来不方便。2、凡有用户系统的网站,在页面载入时,总要先检查一下用户登录状态吧……这不就是知道是谁正在访问这个页面了么…… -_-b
----------------------------------------------------
我只知道谁在访问这个网站,不能知道谁在访问这个页面。
因为一个页面有无数种显示,
ProductList.aspx?Id=1
ProductList.aspx?Id=2
ProductList.aspx?Id=3
....
等等
你只知道用户在看ProductList.aspx,但不知道他在看那一个ID,请问你应不应该记录一下呢?
A:如果真的能达到上限,那就该恭喜你了,你可以升级硬件系统了。(这么大的访问量就不必死守着原来的配置,效益也该早就有了)
B:我说的每次访问都记录并不意味着每次访问都会增加一条记录,比如:
可以把访问记录设计成:
Id url count userId day
1 ProductList.aspx?Id=21 1 001 2007-03-13
2 ProductList.aspx?Id=8 3 001 2007-03-13
这样就可以记录,每个页面都增加一个访问计数就可以记录所有的访问;
当然你也可以不要这个计数字段,只要检查库中是否已存在该页面的记录就行了,有就可以不记录了。
(ps:每次访问都记录可不是我说的,我不过顺着你的说法评论一下而已,而且每次访问页面都获取用户ID和每次访问都记录是两回事,你即使是用url传值不也同样要检查是否已经记录过了么,所以就算每次都记录也不过是多一次数据更新而已,你还可以把记录操作都封装在一个存储过程里面,这样一次更新操作就几乎可以忽略)如果你要提高数据库效率,应该尽量减少数据库和网站后台程序的交互,把数据库操作(包括一些固定的逻辑规则)都写到存储过程里,再花点时间做做优化。2、当你获取页面请求的URL时,取得的是完整的url,包括参数部分……当然,如果你只需要用某个Id来区别的话,那就获取相应的参数就是,这个和你原先设想的获取URL里的用户ID不是一回事么~(就等于我所说的直接写在url上)……
当然,现在用户ID就不必写在上面了,因为可以在后台直接获取而不必用url传递。
A:RMB啊~~~都是吝啬鬼~ 在赚钱也不肯换硬件。
B:你这样做成一张表又要占用服务器资源了,这肯定是不可取的。记录用户ID那肯定是要记录的。2
如果你不获取用户ID,而直接获取Url的参数,我还是搞不明白你是如何理解成是一回事。
就好像每天都有很多人坐车到我的公司来买东西,而我不记录这个用户的联系方式,而直接记录汽车的型号,我是如何知道谁乘坐那辆汽车呢?
{
Item.href += "?param=" + "ParamValue";
}
<td>
<div align="center"><a href="www.abc.com/index.htm" onClick="SetAhref(this)">链接文字</a></div>
</td>
做访问记录还能不用独立表的 -_-b
如果你觉得记录URL太占空间,只记录特殊的ID即可(能满足需求就行)
这不是你原先设定的“说明该页面被访问过一次”么,不过要都能用Id来确定那就记Id吧……至于获取Url的参数,我也是顺着你前面的需求嘛,“就传一个值加到该超链接的Url的后面”这个到后台不就得同样“获取Url的参数”么;
用户Id是肯定要获取的,可以在后台直接获取(类似登录验证)
页面特定的Id信息也是要获取的,直接获取Url的参数
如果用户Id是附加在Url上面的,那么也要以“获取Url的参数”的方式来获取(这应该是你最先想要的吧)
这就要看楼主的后台是否可以知道“现在正在请求(访问)这个页面的人是谁(Id)?”,还是只能反馈“现在正在请求的URL上包含的用户Id是否在用户库里?”;
前者就是说可以在后台获取当前登录用户的Id,而后者则是后台没有登录状态记录只能校验传来的Id是否合法;
所以前者就可有用作用户访问记录,而后只能用来“查询用户是否存在”可用于“推荐人系统”之类的……
缺点:如果页面多,链接多。要一个个添加,麻烦
2、可以遍历你指定DataList里的连接,在onclick事件上加上你的函数9attachEvent)
3、如下代码,跟第2条有些类似,这个只是遍历少点<script>
document.onclick = function(){
var objParent = document.getElementById("tabTest");
var obj = window.event.srcElement ; if(obj && obj.tagName.toUpperCase()=="A"){
for(var i = 0; i < objParent.all.length; i++){
if(objParent.all(i)==obj){
if(obj.href.indexOf("?")<0)
obj.href+="?"
else
obj.href+="&"
obj.href+="p=冷风工作室"
}
}
} return true;
}
</script><body>
这里有dkdkdlsldldld<a href="http://www.google.com/search?q=net205">测试链接</a>
<table width="100%" border="0" id="tabTest" name="tabTest">
<tr>
<th width="15%" height="25">序号</th>
<th width="47%">标题</th>
<th width="19%">作者</th>
<th width="19%">时间</th>
</tr>
<tr>
<td align="center">1</td>
<td><a href="http://community.csdn.net/index.aspx?tt=332">11111</a></td>
<td align="center">aaaaa</td>
<td align="center">2007-3-14</td>
</tr>
<tr>
<td align="center">2</td>
<td><a href="abc.asp">22222</a></td>
<td align="center">addsd</td>
<td align="center">2007-3-14</td>
</tr>
<tr>
<td align="center">3</td>
<td><a href="http://news.163.com/07/0314/03/39H17I7J000127FP.html">3333333</a></td>
<td align="center">ddddd</td>
<td align="center">2007-3-14</td>
</tr>
<tr>
<td align="center">4</td>
<td><a>4444</a></td>
<td align="center">sssss</td>
<td align="center">2007-3-14</td>
</tr>
<tr>
<td align="center">5</td>
<td><a href="abc.asp">55555</a></td>
<td align="center">sssss</td>
<td align="center">2007-3-14</td>
</tr>
</table><table width="100%" border="0" id="tabTest2" name="tabTest2">
<tr>
<td><a href="http://news.163.com/07/0314/03/39H17I7J000127FP.html">另一个测试实例</a></td>
</tr>
</table><p>dsdadasdsd</p>
</body>