📜  在 JavaScript 中使用 innerHTML 的缺点是什么?

📅  最后修改于: 2022-05-13 01:56:41.199000             🧑  作者: Mango

在 JavaScript 中使用 innerHTML 的缺点是什么?

innerHTML 属性是文档对象模型 (DOM) 的一部分,用于设置或返回元素的 HTML 内容。其中返回值表示 HTML 元素的文本内容。它允许 JavaScript 代码操纵正在显示的网站。更具体地说,它设置或返回元素的 HTML 内容(内部 HTML)。 innerHTML 属性被广泛用于修改网页的内容,因为它是修改 DOM 的最简单方法。但是在 JavaScript 中使用 innerHTML 也有一些缺点。

在 JavaScript 中使用 innerHTML 属性的缺点:

  • 使用innerHTML非常慢:使用innerHTML的过程要慢得多,因为它的内容构建得很慢,而且已经解析过的内容和元素也会重新解析,这需要时间。
  • 保留附加到任何 DOM 元素的事件处理程序:事件处理程序不会附加到通过自动设置 innerHTML 创建的新元素。为此,必须跟踪事件处理程序并将其手动附加到新元素。这可能会导致某些浏览器出现内存泄漏。
  • 内容在任何地方都被替换:无论您使用 innerHTML 添加、追加、删除或修改网页上的内容,所有内容都会被替换,并且该元素内的所有 DOM 节点也会被重新解析和重新创建。
  • 不支持附加到 innerHTML:通常,+= 用于 JavaScript 中的附加。但是在使用 innerHTML 附加到 Html 标记时,会重新解析整个标记。

    例子:

    Geeks

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

    forGeeks

    '
  • 旧内容替换问题:即使使用 object.innerHTML = object.innerHTML + 'html' 而不是 object.innerHTML += 'html',旧内容也会被替换。如果不重新解析整个 innerHTML,就无法追加。因此,使用innerHTML 变得非常缓慢。当需要将动态 DOM 元素创建为加号时,字符串连接无法扩展,并且引号的开头和结尾变得难以跟踪。
  • 可以破坏文档: innerHTML 没有提供适当的验证,因此可以使用任何有效的 HTML 代码。这可能会破坏 JavaScript 的文档。甚至可以使用损坏的 HTML,这可能会导致意想不到的问题。
  • 也可用于跨站点脚本 (XSS): innerHTML 可以向网页添加文本和元素这一事实,很容易被恶意用户用来在其他 HTML 元素标签中操纵和显示不需要或有害的元素。跨站脚本还可能导致敏感信息的丢失、泄露和更改。

例子:

 
 
  
 
    
        Using innerHTML in JavaScript
     
 
  
 
      
    

          GeeksforGeeks      

         

        A computer science         portal for geeks.     

                  

               

输出: