http://www.aspxhome.com/javascript/skills/20091/677011.htm
JS 中觸發 A 標簽的點擊事件
問題:有一個列表,每一個條目都是這篇文章的部分內容,類似這樣:
<div class="list">
<div class ="item">
第一篇文章
</div>
<div class ="item">
第二篇文章
</div>
.....
</div>
<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('HTMLEvents');
ev.initEvent('click', false, true);
comment.dispatchEvent(ev);
}
if (document.all) {
// For IE
comment.click();
} else if (document.createEvent) {
//FOR DOM2
var ev = document.createEvent('HTMLEvents');
ev.initEvent('click', false, true);
comment.dispatchEvent(ev);
}
上面的代碼在IE6, IE7 和 FireFox 3 下通過測試。
一點學習心得,記錄在此。