Opera, 作為 A-Grade 浏覽器,在現在的前端開發中務必支持。它很優秀,很不幸,bug是每個浏覽器都不可避免的問題,Opera亦難免。說說我發現的一個關於 cloneNode 的問題。
問題:
假設我們有一個 Form 節點(node)的引用,姑且名之為 elForm,現在需要克隆一份,可以這麼做:var elFormClone = elForm.cloneNode(true).
在插入這份克隆到 DOM 樹中後,IE, Firefox 均未發現問題。Opera會產生這樣的問題:表單內的字段無法引用。比如,假設剛才我們的elForm 有一個 <input name="title" ... />, 此時你無法通過 elFormClone.title 或者 elFormClone['title'] 獲取它。
解決方案:
使用 document.createElement 創建 form 元素,然後設置該元素的 innerHTML(感謝 MS 發明了它) 為elForm 的 innerHtml 即可:
var elFormClone = document.createElement('form');
// 設置一些elForm的原屬性,有必要的話
...
elFormClone.innerHTML = elForm.innerHtml;
// 處理這個clone, 該咋辦就咋辦了
...