2016-09-07 15 views
13

Document.importNode in specificationDocument.importNode VS Node.cloneNode (ví dụ thực tế)

Node.cloneNode in specification

này hai phương pháp làm việc như nhau. Xin vui lòng cho tôi ví dụ thực tế, trong đó tôi có thể thấy sự khác biệt giữa các phương pháp này.

+4

Có thể trong các trình duyệt hiện đại, bạn không thể thấy sự khác biệt, (khác với những gì chúng được xác định trên các giao diện khác nhau, rõ ràng). Về mặt lịch sử, trong DOM, importNode là để sao chép một nút từ một tài liệu khác, trong khi cloneNode là một bản sao của một nút trong cùng một tài liệu, nhưng DOM4 không phân biệt, vì sự khác biệt không có tác dụng hữu ích. – Alohci

Trả lời

11

Alohci đúng: không có nhiều khác biệt, kể từ web compatibility forced the browsers to implicitly adoptNode() before inserting a node into another document.

Trước bạn chèn nút nhân bản vào một tài liệu mới, có một sự khác biệt: các tài liệu chủ sở hữu của các nút được trả về bởi các cloneNode(original) cũng giống như của nút gốc, và các tài liệu mới nếu bạn gọi newDocument.importNode(original). Bạn có thể thấy sự khác biệt này nếu bạn sử dụng ownerDocument hoặc các thuộc tính liên quan (chẳng hạn như baseURI).

Nhưng nếu bạn gọi importNode trên cùng một tài liệu mà nút gốc thuộc về, không có sự khác biệt nào.

Các vấn đề liên quan