js 中 document.createEvent的用法
<a class="comment-mod" onclick="alert('ss')" href="#">評論</a>
如果使用者直接檢視文章清單,那麼所有的評論以及評論框都是不顯示的,但是如果使用者通過别的頁面比如首頁的個人動态直接定位到這篇日志,那麼評論就應該全部顯示。而清單頁和檢視單個條目的頁面是同一個頁面,這就要求我判斷一下使用者是否定位到該篇日志,如果是,就通過JS來觸發 A 标簽的點選事件。
一開始我嘗試了一些方法,想當然地以為 A 标簽和按鈕一樣是有 onclick() 事件的,結果發現沒有,後來從網上搜了一些資料之後,成功解決了這個問題^_^ 。解決辦法是針對 IE 和 FF編寫不同的邏輯,部分代碼如下:
<script>
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);
}
</script>
文法:
createEvent(eventType)
參數 | 描述 |
eventType | 想擷取的 Event 對象的事件子產品名。 關于有效的事件類型清單,請參閱" http://www.w3school.com.cn/xmldom/met_document_createevent.asp 說明"部分。 |
傳回值
傳回新建立的
Event對象,具有指定的類型。
抛出
如果實作支援需要的事件類型,該方法将抛出代碼為 NOT_SUPPORTED_ERR 的
DOMException異常。
說明
該方法将建立一種新的事件類型,該類型由參數
eventType
指定。注意,該參數的值不是要建立的事件接口的名稱,而是定義那個接口的 DOM 子產品的名稱。
下表列出了
的合法值和每個值建立的事件接口:
事件接口 | 初始化方法 | |
HTMLEvents | HTMLEvent | iniEvent() |
MouseEvents | MouseEvent | iniMouseEvent() |
UIEvents | UIEvent | iniUIEvent() |
用該方法建立了 Event 對象以後,必須用上表中所示的初始化方法初始化對象。關于初始化方法的詳細資訊,請參閱
對象參考。
該方法實際上不是由 Document 接口定義的,而是由 DocumentEvent 接口定義的。如果一個實作支援 Event 子產品,那麼 Document 對象就會實作 DocumentEvent 接口并支援該方法。
