Hướng dẫn what are the main disadvantages of using innerhtml in javascript? - nhược điểm chính của việc sử dụng innerhtml trong javascript là gì?

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Cải thiện bài viết

    Lưu bài viết

    ĐọcinnerHTML property is a part of the Document Object Model [DOM] that is used to set or return the HTML content of an element. Where the return value represents the text content of the HTML element. It allows JavaScript code to manipulate a website being displayed. More specifically, it sets or returns the HTML content [the inner HTML] of an element. The innerHTML property is widely used to modify the contents of a webpage as it is the easiest way of modifying DOM. But there are some disadvantages to using innerHTML in JavaScript.

    Bàn luận

    • Thuộc tính bên trong là một phần của mô hình đối tượng tài liệu [DOM] được sử dụng để đặt hoặc trả về nội dung HTML của một phần tử. Trong đó giá trị trả về đại diện cho nội dung văn bản của phần tử HTML. Nó cho phép mã JavaScript thao tác một trang web đang được hiển thị. Cụ thể hơn, nó đặt hoặc trả về nội dung HTML [HTML bên trong] của một phần tử. Thuộc tính bên trong được sử dụng rộng rãi để sửa đổi nội dung của trang web vì đây là cách dễ nhất để sửa đổi DOM. Nhưng có một số nhược điểm đối với việc sử dụng bên trong trong JavaScript. The process of using innerHTML is much slower as its contents as slowly built, also already parsed contents and elements are also re-parsed which takes time.
    • Nhược điểm của việc sử dụng thuộc tính bên trong trong JavaScript: The event handlers do not get attached to the new elements created by setting innerHTML automatically. To do so one has to keep track of the event handlers and attach it to new elements manually. This may cause a memory leak on some browsers.
    • Việc sử dụng bên trong rất chậm: quá trình sử dụng bên trong chậm hơn nhiều vì nội dung của nó như được xây dựng chậm, cũng đã phân tích các nội dung và các phần tử cũng được phân tích lại có thời gian. Either you add, append, delete or modify contents on a webpage using innerHTML, all contents is replaced, also all the DOM nodes inside that element are reparsed and recreated.
    • Bảo tồn các trình xử lý sự kiện được gắn vào bất kỳ phần tử DOM nào: Trình xử lý sự kiện không được gắn vào các phần tử mới được tạo bằng cách tự động cài đặt InNERHTML. Để làm như vậy, người ta phải theo dõi các trình xử lý sự kiện và gắn nó vào các yếu tố mới theo cách thủ công. Điều này có thể gây rò rỉ bộ nhớ trên một số trình duyệt. Usually, += is used for appending in JavaScript. But on appending to an Html tag using innerHTML, the whole tag is re-parsed.

      Example:

      Geeks

      title = document.getElementById['#geek'] // The whole "geek" tag is reparsed title.innerHTML += '

      forGeeks

      '
    • Nội dung được thay thế ở mọi nơi: hoặc bạn thêm, nối, xóa hoặc sửa đổi nội dung trên trang web bằng cách sử dụng bên trong, tất cả các nội dung được thay thế, cũng là tất cả các nút DOM bên trong phần tử đó được sửa lại và tái tạo. The old content is replaced even if object.innerHTML = object.innerHTML + ‘html’ is used instead of object.innerHTML += ‘html’. There is no way of appending without reparsing the whole innerHTML. Therefore, working with innerHTML becomes very slow. String concatenation just does not scale when dynamic DOM elements need to be created as the plus’ and quote openings and closings becomes difficult to track.
    • Lắp lại vào bên trong không được hỗ trợ: Thông thường, += được sử dụng để nối thêm trong JavaScript. Nhưng khi nối vào thẻ HTML bằng cách sử dụng bên trong, toàn bộ thẻ được sắp xếp lại. There is no proper validation provided by innerHTML, so any valid HTML code can be used. This may break the document of JavaScript. Even broken HTML can be used, which may lead to unexpected problems.
    • Nội dung cũ đã thay thế vấn đề: Nội dung cũ được thay thế ngay cả khi Object.innerhtml = object.innerhtml + ‘html, được sử dụng thay vì object.innerhtml + =‘ html. Không có cách nào để nối thêm mà không lặp lại toàn bộ nội tâm. Do đó, làm việc với InsideHTML trở nên rất chậm. Sự kết hợp chuỗi chỉ không mở rộng khi các thành phần DOM động cần được tạo ra khi cộng với các lỗ mở và trích dẫn và đóng cửa trở nên khó theo dõi. The fact that innerHTML can add text and elements to the webpage, can easily be used by malicious users to manipulate and display undesirable or harmful elements within other HTML element tags. Cross-site Scripting may also lead to loss, leak and change of sensitive information.

    Example:

     

     

     

         

     5head

    Có thể phá vỡ tài liệu: Không có xác thực thích hợp được cung cấp bởi InnerHTML, do đó, bất kỳ mã HTML hợp lệ nào cũng có thể được sử dụng. Điều này có thể phá vỡ tài liệu của JavaScript. Ngay cả HTML bị hỏng cũng có thể được sử dụng, điều này có thể dẫn đến các vấn đề bất ngờ.

    Cũng có thể được sử dụng cho kịch bản trang web chéo [XSS]: thực tế là InsideHTML có thể thêm văn bản và các phần tử vào trang web, có thể dễ dàng được người dùng độc hại sử dụng để thao tác và hiển thị các yếu tố không mong muốn hoặc có hại trong các thẻ phần tử HTML khác. Kịch bản chéo trang cũng có thể dẫn đến mất mát, rò rỉ và thay đổi thông tin nhạy cảm.

    Bài Viết Liên Quan

    Chủ Đề