解決MSIE 中的addEventListener 問題
在Javascript 中,嘗試使用addEventListener 實作「複製」事件可能會導致以下錯誤MS:
<code class="javascript">document.getElementById('container').addEventListener('copy',beforecopy,false ); Object doesn't support this property or method</code>
解決方案
MSIE 與標準addEventListener 方法不同,需要使用「attachEvent」。這可以透過條件檢查來實現:
<code class="javascript">if (el.addEventListener){ el.addEventListener('click', modifyText, false); } else if (el.attachEvent){ el.attachEvent('onclick', modifyText); }</code>
或者,可以建立一個自訂函數來抽象化此過程:
<code class="javascript">function bindEvent(el, eventName, eventHandler) { if (el.addEventListener){ el.addEventListener(eventName, eventHandler, false); } else if (el.attachEvent){ el.attachEvent('on'+eventName, eventHandler); } } //... bindEvent(document.getElementById('myElement'), 'click', function () { alert('element clicked'); });</code>
獎勵:第三個參數(useCapture )
addEventListener ('useCapture') 的第三個參數決定事件處理優先權。如果設定為 true,則表示需要擷取事件,其中事件在到達目標元素之前會在元素的祖先處進行處理。
以上是為什麼「addEventListener」對 MSIE 中的「複製」事件不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!