찾다
웹 프론트엔드HTML 튜토리얼innerHTML application_HTML/Xhtml_웹페이지 제작


블랭크 블로그: http://www.planabc.net/
innerHTML 속성은 HTML 요소의 콘텐츠를 완전히 바꾸는 간단한 방법을 제공하므로 매우 널리 사용됩니다. 또 다른 방법은 DOM 레벨 2 API(removeChild, createElement,appendChild)를 사용하는 것입니다. 그러나 DOM 트리를 수정하기 위해 innerHTML을 사용하는 것은 매우 쉽고 효과적인 방법임은 분명합니다. 그러나 innerHTML에는 그 자체로 몇 가지 문제가 있다는 점을 알아야 합니다.
    HTML 문자열에 defer로 표시된 스크립트 태그(
)가 포함되어 있는 경우 innerHTML 속성이 잘못 처리되면 Internet Explorer에서 스크립트 삽입 공격이 발생할 수 있습니다. innerHTML을 설정하면 이벤트 핸들러를 등록한 기존 HTML 요소가 삭제되어 일부 브라우저에서 메모리 누수 위험이 발생할 수 있습니다.
    언급할 가치가 있는 몇 가지 다른 사소한 단점도 있습니다.
방금 생성한 요소에 대한 참조를 얻을 수 없습니다. 해당 참조를 얻으려면 DOM API를 사용하여 수동으로 코드를 추가해야 합니다. 모든 브라우저의 모든 HTML 요소에 innerHTML 속성을 설정할 수는 없습니다. 예를 들어 Internet Explorer에서는 테이블의 행 요소에 innerHTML 속성을 설정할 수 없습니다.

innerHTML 속성 사용과 관련된 보안 및 메모리 문제가 더 걱정됩니다. 분명히 이것은 새로운 문제가 아니며 이러한 문제 중 일부에 대한 해결책을 찾아낸 재능 있는 사람들이 이미 있습니다.
Douglas Crockford는 이벤트 핸들러를 등록하는 HTML 요소로 인해 발생하는 일부 순환 참조를 중단하고 가비지 수집기가 이러한 HTML 요소와 연결된 메모리를 해제할 수 있도록 하는 정리 함수를 작성했습니다.
HTML 문자열에서 스크립트 태그를 제거하는 것은 보기만큼 쉽지 않습니다. 정규식을 사용하면 원하는 효과를 얻을 수 있지만 모든 가능성을 포괄하는지 여부는 알기 어렵습니다. 내 해결책은 다음과 같습니다. <script>/</script>[^>]*>[Ss]*?]*>/ig

이제 이 두 기술을 단일 setInnerHTML 함수로 결합하고 setInnerHTML 함수를 YUI의 YAHOO.util.Dom에 바인딩해 보겠습니다.
YAHOO.util.Dom.setInnerHTML = 함수(el, html) {
el = YAHOO.util.Dom.get(el);
if (!el || typeof html !== 'string ') {
null을 반환합니다.
}
// 순환 참조 중단
(함수 (o) {
var a = o.attributes, i, l, n, c;
if (a) {
l = a.length; for (i = 0; i n = a[i].name;
if (typeof o[n] === '함수') {
o[n] = null;
}
}
}
a = o.childNodes;
if (a) {
l = a.length; for (i = 0; i c = o.childNodes[i];
// 하위 노드 지우기
args.callee(c);
// YUI의 addListener를 통해 요소에 등록된 모든 리스너를 제거합니다.
YAHOO.util.Event.purgeElement(c);
}
}
})(el);
// HTML 문자열에서 스크립트를 제거하고 innerHTML 속성을 설정합니다. <script> el.innerHTML = html.replace(/</script>[^>]*>[Ss]*?
]*>/ig, " ");
// 첫 번째 하위 노드의 참조를 반환합니다.
return el.firstChild;
};
이 함수가 수행해야 하는 다른 작업이 있거나 정규 표현식에서 누락된 부분이 있으면 알려주시기 바랍니다. <script>물론 웹페이지에 악성 코드를 삽입하는 방법은 이 외에도 많습니다. setInnerHTML 함수는 모든 A급 브라우저에서 <br /> 태그의 실행 동작만 정규화합니다. 신뢰할 수 없는 HTML 코드를 삽입하려면 먼저 서버 측에서 필터링해야 합니다. 이를 수행할 수 있는 라이브러리가 많이 있습니다. <script defer>&hellip;</script>원문: Julien Lecomte의 "innerHTML 문제"
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何自动切换特定应用程序的iPhone方向锁定如何自动切换特定应用程序的iPhone方向锁定Jun 06, 2023 am 08:22 AM

在iOS中,当您将iPhone从纵向旋转到横向时,许多App会显示不同的视图。根据应用程序及其使用方式,这种行为并不总是可取的,这就是Apple在“控制中心”中包含方向锁定选项的原因。但是,某些应用程序在禁用方向锁定的情况下工作得更有用-想想YouTube或照片应用程序,将设备旋转到横向可以提供更好的全屏观看体验。如果您倾向于保持锁定状态,则必须在每次打开这些类型的应用程序时在“控制中心”中禁用它以获得全屏体验。然后,当您关闭应用程序时,您必须记住重新打开方向锁定,这并不理想。幸运的是,您可以创

在虚拟 Windows 11 桌面上应用自定义壁纸的简单技巧在虚拟 Windows 11 桌面上应用自定义壁纸的简单技巧May 02, 2023 pm 02:01 PM

如果您每天都使用虚拟桌面,那么我们有好消息要告诉您!在Windows10InsiderBuilds上进行多次测试后,在虚拟桌面上应用自定义壁纸的功能现在已成为Windows11的一部分。虽然现在,在Windows10上,您可以打开多个桌面,但不可能在每个桌面上使用不同的壁纸。随着下周第一个Windows11InsiderBuild版本的发布,您将能够轻松地做到这一点。通常,虚拟桌面用于特定的应用程序和操作,并且大部分时间用于保持事物井井有条。但是,如果您还想使用自定义壁纸个性化

Go语言中的RPC框架原理与应用Go语言中的RPC框架原理与应用Jun 01, 2023 pm 03:01 PM

一、RPC框架的概念在分布式系统中,常常需要在不同的服务端和客户端之间传递数据,RPC(RemoteProcedureCall)框架是一种常用的技术手段。RPC框架允许应用程序通过远程消息传递调用另一个执行环境的函数或方法,从而使程序能够在不同的计算机上运行。目前市面上有很多RPC框架,如Google的gRPC、Thrift、Hessian等,本文主要介

AI人必看!外媒总结最佳AI应用,你用过几个?AI人必看!外媒总结最佳AI应用,你用过几个?May 27, 2023 pm 07:42 PM

人工智能是一种有前途的技术,在许多领域都变得不可或缺。它集成到一系列应用程序和软件中,以显著提高生产力。对于许多专家来说,最能掌握人工智能工作方式的公司和人员无疑将成为明天世界的领导者。然后,重要的是要识别这些工具并控制它们的工作方式。目前,人工智能市场已经拥有许多技术,这些技术具有非常有趣且特殊的特征。对此,国外媒体评选出了2023年25个最好的人工智能产品或应用。1.ChatGPTChatGPT聊天由美国人工智能公司OPENAI开发,现在被视为人工智能革命的引擎。它确实是一个强大的工具,能够

基于对抗梯度的探索模型及其在点击预估中的应用基于对抗梯度的探索模型及其在点击预估中的应用Apr 13, 2023 pm 11:34 PM

1. 摘要排序模型在广告、推荐和搜索系统中起到了至关重要的作用。在排序模块中,点击率预估技术又是重中之重。目前工业界的点击率预估技术大多采用深度学习算法,基于数据驱动来训练深度神经网络,然而数据驱动带来的相应问题是推荐系统中的新进项目会存在冷启动问题。探索与利用(Exploration-Exploitation,E&amp;E)方法通常用于处理大规模在线推荐系统中的数据循环问题。过去的研究通常认为模型预估不确定度高意味着潜在收益也较高,因此大部分研究文献聚焦到对不确定度的估计上。对于采用

她用10年日记训练GPT-3,对话童年的自己,网友:AI最治愈的应用她用10年日记训练GPT-3,对话童年的自己,网友:AI最治愈的应用Apr 12, 2023 pm 04:25 PM

“这是我目前听过关于AI最好、最治愈的一个应用。”到底是什么应用,能让网友给出如此高度的评价?原来,一个脑洞大开的网友Michelle,用GPT-3造了一个栩栩如生的“童年Michelle”。然后她和童年的自己聊起了天,对方甚至还写来一封信。“童年Michelle”的“学习资料”也很有意思——是Michelle本人的日记,而且是连续十几年,几乎每天都写的那种。日记内容中有她的快乐和梦想,也有恐惧和抱怨;还有很多小秘密,包括和Crush聊天时紧张到眩晕…(不爱写日记的我真的给跪了……)厚厚一叠日记

浅析:ChatGPT应用的底层原理浅析:ChatGPT应用的底层原理Apr 13, 2023 am 08:37 AM

ChatGPT 无疑是最近网络中最靓的仔,小汪哥通过这段时间的使用,加上对一些资料的查阅,了解了一些背后的原理,试图讲解一下ChatGPT应用的底层原理。如果有不正确的地方,欢迎指正。阅读本文可能为会你解答以下问题:为什么有的ChatGPT 收费,有的不收费?为什么ChatGPT是一个字一个字地回答的?为什么中文问题的答案有时候让人啼笑皆非?为什么你问它今天是几号,它的回答是过去的某个时间?为什么有的问题会拒绝回答?“ChatGPT 国内版” 运行原理随着ChatGPT的爆火,出现了很多国内版,

Java语言中的数据分析应用介绍Java语言中的数据分析应用介绍Jun 10, 2023 pm 08:51 PM

Java语言是当前应用最广泛的程序设计语言之一,它的优越性能和多样化的开发环境,让它成为许多大企业以及中小企业的首选编程语言。在数据分析领域中,Java语言也有着广泛的应用,本文将介绍Java语言中的数据分析应用。一、Java语言的数据分析优势Java语言具有很强的数据处理能力,它支持多线程,能够处理大规模数据集,而且拥有分布式计算能力。这使Java语言具备

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구