当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JS触发A标签的点击事件

Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
JS Array对象入门分析
javascript typeof的用法与typeof运算符介绍[详细]
js CSS操作方法集合
让任务管理器中的CPU跳舞的js代码
ajax无刷新动态调用股票信息(改良版)
js Clip的奇思妙想之文字拼接效果
js Clip奇思妙想之多彩渐变字效果
JS 创建对象(常见的几种方法)
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
JS提交并解析后台返回的XML的代码
初学Javascript的一些总结
JS 继承实例分析
js form action动态修改方法
仿163填写邮件地址自动显示下拉(无优化)
js判断对象是否是某一类型
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
js 目录列举函数
js颜色选择器代码[firefox不支持]
js wmp操作代码小结(音乐连播功能)

Javascript 中的 JS触发A标签的点击事件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 448 ::
收藏到网摘: n/a

问题:有一个列表,每一个条目都是这篇文章的部分内容,类似这样:

<div class="list">
<div class="item">
第一篇文章</div>
<div class="item">
第二篇文章</div>
.....</div>

而且在每个条目的div的右上角都有一个“评论”链接,点击就会展开所有的评论,并且显示评论框,这个链接的形式如下:

<a class="comment-mod" href="#">评论</a>

如果用户直接查看文章列表,那么所有的评论以及评论框都是不显示的,但是如果用户通过别的页面比如首页的个人动态直接定位到这篇日志,那么评论就应该全部显示。而列表页和查看单个条目的页面是同一个页面,这就要求我判断一下用户是否定位到该篇日志,如果是,就通过JS来触发 A 标签的点击事件。

一开始我尝试了一些方法,想当然地以为 A 标签和按钮一样是有 onclick() 事件的,结果发现没有,后来从网上搜了一些资料之后,成功解决了这个问题^_^ 。解决办法是针对 IE 和 FF编写不同的逻辑,部分代码如下:

var comment = document.getElementsByTagName('a')[0];
 
if (document.all) { // For IE 
 
comment.click();
} else if (document.createEvent) { //FOR DOM2
 
var ev = document.createEvent('MouseEvents'); ev.initEvent('click', false, true); comment.dispatchEvent(ev);
}

上面的代码在IE6, IE7 和 FireFox 3 下通过测试。

UPDATE: 测试的时候发现代码在FireFox 2下不好使,仔细检查之后发现了问题,把 document.createEvent(’HTMLEvents’) 改成 document.createEvent(’MouseEvents‘);就好了。(刚写完的时候唯独没有测试FireFox 2,结果还真是有问题,看来那句话说的对:如果你觉得可能会出问题,那就一定会出问题。

参考文章:表单Form的submit事件不响应