問題:有一個列表,每一個條目都是這篇文章的部分內容,類似這樣:
<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事件不響應
新聞熱點
疑難解答