12장 이벤트
1. 이벤트 흐름
1.1 이벤트 버블링(IE 이벤트 흐름)
□이벤트 버블링(이벤트 버블링), 즉 문서 내에서 가장 구체적인 요소부터 이벤트가 시작됩니다. 가장 깊은 중첩 수준을 가진 노드)는 이를 수락한 다음 덜 구체적인 노드(문서)까지 전파합니다.
□모든 브라우저는 이벤트 버블링을 지원합니다. Firefox, Chrome 및 Safari 버블 이벤트는 창 개체까지 전달됩니다.
1.2 이벤트 캡처(넷스케이프 이벤트 스트리밍)
□ 덜 특정 노드는 이벤트를 더 먼저 수신하고 특정 노드는 마지막으로 이벤트를 수신합니다.
□Safari, chrome, Opera, Firefox를 지원하지만 캡처는 window 객체부터 시작됩니다(DOM2 레벨 사양은 문서에서 시작됩니다).
1.3DOM 이벤트 흐름
□ "DOM2 수준 이벤트"에서 지정하는 이벤트 흐름은 이벤트 캡처 단계, 대상 단계, 이벤트 버블링 단계의 세 단계로 구성됩니다.
□DOM2: 캡처 단계에는 실제 대상이 포함되지 않으며 이벤트 대상도 포함되지 않으며 이벤트를 가로챌 기회만 제공됩니다.
□Safari, chrome, Firefox 및 Opera9.5 이상에서는 캡처 단계 중에 이벤트 개체에 대한 이벤트를 트리거합니다. 결과적으로 대상에서 이벤트를 운영할 수 있는 두 가지 기회가 있습니다.
□IE는 DOM 이벤트 스트리밍을 지원하지 않습니다. 기타 지원.
2. 이벤트 핸들러(또는 이벤트 리스너)
정의: 이벤트에 응답하는 함수입니다.
2.1 HTML 이벤트 핸들러
□ 요소가 지원하는 각 이벤트는 해당 이벤트 핸들러와 동일한 이름을 가진 HTML 속성을 사용하여 지정할 수 있습니다.
□함수 코드 문자는 HTML 이스케이프 처리되어야 합니다.
□ 문제:
◇시차 문제: 이벤트가 발생했을 때 이벤트 핸들러에 아직 실행 조건이 없을 수 있습니다. 오류가 발생하지 않도록 try-catch 블록 캡슐화를 사용하세요.
◇HTML과 JavaScript 코드는 밀접하게 결합되어 있습니다.
2.2 DOM 레벨 0 이벤트 핸들러
□DOM 레벨 0 이벤트 핸들러: 이벤트 핸들러 속성에 함수를 할당합니다. 장점: 간단하고 크로스 브라우저입니다.
□ 이 이벤트 핸들러 메서드는 코드가 실행될 때까지 이벤트를 바인딩하지 않습니다.
□ DOM 레벨 0 메서드를 사용하여 지정된 이벤트 핸들러는 요소의 메서드로 간주됩니다. 이벤트 핸들러는 요소 범위 내에서 실행됩니다. 프로그램의 this는 현재 요소를 나타냅니다.
□DOM0 레벨 이벤트 삭제: btn.onclick = null; //이벤트 핸들러 삭제
2.3 DOM2 레벨 이벤트 핸들러
□addEventListener() 및 RemoveEventListener(). 3개의 매개변수(처리할 이벤트 이름, 이벤트 핸들러로서의 함수, 부울 값)를 허용합니다.
◇마지막 부울 값이 true이면 캡처 단계에서 이벤트 핸들러가 호출된다는 의미이고, false이면 버블링 단계에서 이벤트 핸들러가 호출된다는 의미입니다.
Var btn = document.getElementById("myBtn");
Btn.addEventListener("click",function(){alert(this.id);},false)
□ DOM 레벨 2 사용 방법 이벤트 핸들러 추가의 주요 이점은 여러 이벤트 핸들러를 추가할 수 있다는 것입니다. 추가된 순서대로 실행됩니다.
□addEventListener()를 통해 추가된 이벤트 핸들러는 RemoveEventListener()를 통해서만 제거할 수 있습니다. 제거 시 전달된 매개변수는 핸들러 추가 시 사용된 매개변수와 동일합니다. 즉, 익명 함수는 제거할 수 없습니다.
□호환성을 최대화하려면 버블링 단계에 이벤트 핸들러를 추가하세요.
□Firefox, Safari, Chrome 및 Opera는 DOM2 수준 이벤트 핸들러를 지원합니다. IE는 이를 지원하지 않으며 자체 이벤트 핸들러를 가지고 있습니다.
2.4 IE 이벤트 핸들러.
□ IE의 DOM2와 유사한 메서드: attachmentEvent() 및 detachEvent(). 두 메소드 모두 이벤트 핸들러 이름과 이벤트 핸들러 함수라는 동일한 두 매개변수를 허용합니다.
□IE는 버블링만 지원하며, AttachEvent()를 통해 추가된 이벤트 핸들러가 버블링 단계에 추가됩니다.
attachEvent()의 이벤트 처리 함수는 전역 범위에서 실행되므로 window와 동일합니다.
□attachEvent()는 역순으로 트리거할 요소에 여러 핸들러를 추가할 수도 있습니다.
□attachEvent() 이벤트는 detachEvent()를 통해 제거할 수 있지만 익명 함수는 제거할 수 없습니다.
2.5 크로스 브라우저 이벤트 핸들러
var EventUtil = {
addHandler : function(element, type, handler){
if(element.addEventListener){
element.addEventListener(type ,handler ,false);
}else if(element.attachEvent){
element.attachEvent("on" 유형, 핸들러)
}else{
elmenet["on" 유형] = 핸들러;
}
],
removeHandler : function(element, type, handler){
if(element.removeEventListener){
element.removeEventListener(type, handler, false); }else if(element.detachEvent){
element.detachEvent("on" 유형, 핸들러);
}else{
element["on" 유형] =
}
}
};
□이 호환성 기능은 IE의 범위 문제 등 브라우저의 모든 문제를 고려하지 않습니다.
3. 이벤트 객체
정의: DOM에서 이벤트가 발생하면 이벤트 객체가 생성됩니다. 이 객체에는 이벤트와 관련된 모든 정보가 포함됩니다.
3.1 DOM의 이벤트 객체
① DOM 호환 브라우저는 이벤트 객체를 이벤트 핸들러(DOM 레벨 0 또는 DOM 레벨 2)에 전달합니다. HTML 속성을 통해 지정되면 이벤트 변수는 이벤트 객체를 보유합니다.
②모든 이벤트 객체에는 다음과 같은 속성/메서드가 포함됩니다. P291
□bubbles: 이벤트 버블 여부를 나타냅니다. bool.
□cancelable: 이벤트의 기본 동작을 취소할 수 있는지 여부를 나타냅니다(bool).
□currentTarget: 이벤트 핸들러가 현재 이벤트를 처리하고 있는 요소입니다.
□세부사항: 행사와 관련된 세부사항입니다.
□eventPhase: 이벤트 핸들러가 호출되는 단계: 1. 캡처 2. 대상에서 3. 버블링.
□preventDefault(): 이벤트 기본 동작을 취소합니다.
□stopPropagation(): 추가 이벤트 캡처 또는 버블링을 취소합니다.
□target : 이벤트의 대상입니다.
□type: 트리거되는 이벤트의 유형입니다.
□view: 이벤트와 관련된 추상적인 뷰입니다.
③이벤트 핸들러 내부:
□ 객체 this는 항상 currentTarget의 값과 동일합니다. 즉, this와 currentTarget은 모두 이벤트 프로그램에 바인딩된 요소를 가리킵니다.
□target에는 이벤트의 실제 대상, 즉 이벤트를 트리거한 요소만 포함됩니다.
④event.preventDefault(): 특정 이벤트의 기본 동작을 취소할 수 있습니다.
⑤event.stopPropagation(): DOM에서 이벤트 전파를 즉시 중지합니다.
⑥ eventPhase 속성을 사용하여 이벤트가 현재 이벤트 흐름의 어느 단계에 있는지 확인합니다.
3.2 IE의 이벤트 객체
①IE에서 이벤트 객체에 접근하는 방법은 지정된 이벤트 핸들러 방식에 따라 다릅니다.
□DOM0 레벨 메소드를 사용하여 이벤트 핸들러를 추가하는 경우 이벤트 객체가 윈도우 객체의 속성으로 존재합니다.
□attachEvent()를 사용하여 추가하면 이벤트 객체가 매개변수로 전달됩니다. window.event를 통해서도 접근할 수 있습니다.
□HTML 속성을 통해 이벤트 핸들러를 지정할 때 이벤트라는 변수를 통해 이벤트 객체에 접근할 수 있습니다.
②IE의 모든 이벤트 개체에는 다음 속성/메서드가 포함됩니다.
□cancelBubble: 기본값은 false, 이벤트 버블링을 취소하려면 true로 설정합니다(DOM의 stopPropagation() 메서드와 유사)
□returnValue: 기본값 이벤트의 기본 동작을 취소하려면 false로 설정합니다. (DOM2의 PreventDefault() 메소드와 유사)
□srcElement: 이벤트 대상(DOM2의 대상 속성과 동일)
□type: 트리거되는 이벤트 유형.
3.3 크로스 브라우저 이벤트 객체
var eventUtil = {
getEvent : function(event){
Return event ? Event : window.event
},
getTarget : function ( event){
return event.target || event.srcElement;
},
preventDefault : function(event){
if(event.preventDefault){
event.preventDefault() ;
}else{
event.returnValue = false;
}
},
stopPropagation : function(event){
if(event.stopPropagation){
event. ();
}else{
event.cancelBubble = true;
}
}
4. 이벤트 유형
□마우스 이벤트 마우스 페이지에서 작업이 수행될 때 트리거됩니다.
□키보드 이벤트, 사용자가 키보드를 통해 페이지에서 작업을 수행할 때 트리거됩니다.
□HTML 이벤트, 브라우저 창이 변경되거나 특정 클라이언트/서버일 때; 상호 작용이 트리거됩니다.
□기본 DOM 구조가 변경될 때 트리거되는 돌연변이 이벤트입니다.
4.1 UI 이벤트
UI 이벤트는 주로 요소 포커스와 관련이 있으며 DOM 호환 브라우저에서만 지원됩니다.
□DOMActive: 요소가 사용자 조작(마우스 또는 키보드를 통해)에 의해 활성화되었음을 나타냅니다.
□DOMFocusIN: 요소가 포커스를 얻었음을 나타냅니다.
□DOMFocusOut: 요소가 포커스를 잃었음을 나타냅니다. in HTML;
△지원되는 브라우저가 매우 적기 때문에 권장하지 않습니다.
4.2 마우스 이벤트
① DOM에는 7개의 마우스 이벤트가 정의되어 있습니다. 페이지의 모든 요소는 마우스 이벤트를 지원합니다.
□click: 사용자가 메인 마우스 버튼(왼쪽에 있는 버튼)을 클릭할 때 일반 공식) 또는 Enter 키를 누르면 트리거됩니다.
□dblclick: 사용자가 기본 마우스 버튼(보통 왼쪽 버튼)을 두 번 클릭할 때 트리거됩니다.
□mousedown: 사용자가 마우스 버튼을 누를 때 트리거됩니다. 이 이벤트는 키보드를 통해 트리거될 수 없습니다.
□mouseout: 마우스 포인터가 요소 위에 있고 사용자가 이를 다른 요소로 이동할 때 발생합니다. 새로 이동된 요소는 이전 요소 외부에 있거나 해당 요소의 하위 요소일 수 있습니다. 키보드를 통해 트리거할 수 없습니다.
□mouseover: 마우스 포인터가 요소 외부에 있다가 사용자가 처음으로 다른 요소 경계 내에서 마우스 포인터를 움직일 때 트리거됩니다. 키보드를 통해 트리거되지 않습니다.
□mouseup: 사용자가 마우스 버튼을 놓을 때 트리거됩니다. 키보드를 통해 트리거되지 않습니다.
□mousemove: 마우스 포인터가 요소 내부에서 움직일 때 반복적으로 트리거됩니다. 키보드를 통해 트리거할 수 없습니다.
②참고:
□click 이벤트는 동일한 요소에서 mousedown 및 mouseup 이벤트가 연속적으로 발생하는 경우에만 발생합니다. mousedown 또는 mouseup이 취소되면 클릭 이벤트가 트리거되지 않습니다.
□dblclick 이벤트가 발생하기 전에 동일한 요소가 연속으로 두 번 클릭 이벤트를 발생시킵니다.
4.2.1 클라이언트 영역 좌표 위치
□브라우저 뷰포트의 특정 위치에서 마우스 이벤트가 발생합니다. 이 위치 정보는 이벤트 객체의 clientX 및 clientY 속성에 저장됩니다.
4.2.2 화면 좌표 위치
□마우스 이벤트가 발생하면 컴퓨터 화면 전체를 기준으로 한 위치도 있습니다. 이벤트 객체(event)의 screenX, screenY 속성에 저장됩니다.
4.2.3 수정자 키
□마우스 이벤트는 주로 마우스를 사용하여 발생하지만 키보드의 특정 키도 마우스를 눌렀을 때 필요한 작업에 영향을 줄 수 있습니다.
□수정 키는 Shift, Ctrl, Alt 및 Meta(Apple에서는 cmd 키, Windows에서는 windows 키)입니다.
□ DOM의 네 가지 키(마우스 이벤트 시)를 나타내는 부울 속성: ShiftKey, ctrlKey, altKey 및 MetaKey(IE는 MetaKey를 지원하지 않음)
4.2.4 관련 요소
mouseover 및 mouseout 이벤트가 발생하면 더 많은 요소가 관련됩니다. 두 이벤트 모두 한 요소의 경계 내에서 다른 요소의 경계 내로 마우스 포인터를 이동하는 것과 관련됩니다.
□DOM은 evnet 객체의 관련Target 속성을 통해 관련 요소 정보를 제공합니다.
□IE는 관련 타겟 속성을 지원하지 않습니다.
◇mouserover 이벤트가 발생하면 IE의 fromElement 속성에 해당 요소가 저장됩니다.
◇mouseout 이벤트가 발생하면 IE의 toElement 속성이 해당 요소를 저장합니다.
□호환 메소드:
var eventUtil = {
getRelatedTarget : function(event){
if(event.관련Target){
return event.관련Target
}else if(event; .toElement){
return event.toElement;
}else if(event.fromElement){
return event.fromElement
}else{
return null; >}
};
4.2.5 마우스 버튼
□클릭 이벤트: 기본 마우스 버튼을 클릭하면 발생하며, 키 정보를 감지할 필요가 없습니다.
□Mousedown 및 mouseup 이벤트에는 이벤트 객체에 버튼 속성이 있어 버튼을 누르거나 떼는 것을 나타냅니다.
□DOM의 버튼 속성 값:
◇0은 기본 마우스 버튼을 의미
◇1마우스 가운데 버튼(휠 버튼)
◇2보조 마우스 버튼
□IE에서 제공하는 버튼 속성
◇ 0 버튼 없음 ◇1 기본 키 누르기 ◇2 보조 키 누르기 ◇3 기본 및 보조 동시에 ◇4 중간 버튼 ◇5 기본 ◇6 보조 ◇7 기본 및 보조
□호환 코드
getButton : 기능(이벤트 ){
if(document.implementation.hasFeature("MouseEvents","2.0")){
return event.button
}else{
switch(event.button){
사례 0 :
사례 1 :
사례 3 :
사례 5 :
사례 7 :
반환 0
사례 2 :
사례 6 :
반환 2; ;
case 4:
return 1;
}
}
}
}
□기본 키를 누르거나 떼지 않으면 Opera는 mouseup 또는 mousedown
4.2.6 추가 이벤트 정보
dom2의 □detail 속성: 요소 클릭 횟수, 요소를 떠난 후 0으로 지워짐
□IE는 마우스에 추가 정보를 추가합니다. (IE에서만 지원되며 실질적인 가치는 없습니다).
4.2.7 모바일 사파리
아이폰, 아이팟 사파리 개발 시:
□ dblclick 이벤트는 지원하지 않습니다. Safari 창을 두 번 클릭하면 확대되며 해당 동작을 변경할 수 있는 방법은 없습니다.
□클릭 가능한 요소를 탭하면 먼저 마우스 이동 이벤트가 발생합니다. 콘텐츠가 변경되면 다른 이벤트는 발생하지 않습니다. 내용 변경이 없으면 mousedown, mouseup, click이 동시에 발생합니다.
□mousemove 이벤트는 mouseover 및 mouseout 이벤트도 트리거합니다.
4.2.7 접근성 문제
스크린 리더는 클릭을 통해서만 이벤트를 실행할 수 있습니다. 마우스 이벤트 사용 시 주의 사항:
□ 클릭 이벤트를 사용하여 코드 실행
□ 사용자에게 새 옵션을 표시하기 위해 onmouseover를 사용하지 마세요. 스크린 리더가 실행되지 않습니다.
□dblclick을 사용하여 중요한 작업을 수행하지 마세요. 키보드를 실행할 수 없습니다.
4.3 키보드 이벤트
① 키보드 이벤트 지원은 주로 DOM 레벨 0을 따릅니다. "DOM 레벨 3"은 키보드 이벤트를 지정합니다.
②3가지 키보드 이벤트:
□keydown: 사용자가 키보드의 아무 키나 눌렀을 때 발생하며, 계속 누르고 있으면 이 이벤트가 반복적으로 발생합니다.
□keypress: 사용자가 키보드의 문자 키를 누를 때 발생합니다. 사용자가 해당 키를 길게 누르면 이 이벤트가 반복적으로 발생합니다.
□keyup: 사용자가 키보드의 키를 놓을 때 트리거됩니다.
□마우스 이벤트와 동일하며, 동일한 수정키를 지원합니다. 또한 키보드 이벤트 객체에는 shifKey, ctrlKey, altKey 및 MetaKey 속성도 있습니다.
4.3.1 키 코드
①keydown 및 keyup 이벤트가 발생하면 이벤트 객체의 keyCode 속성에 키보드의 특정 키에 해당하는 코드가 포함됩니다.
②keyCode 속성값은 ASCII 코드의 해당 소문자 또는 숫자의 인코딩과 동일합니다. P304 테이블 확인
③ DOM 및 IE 이벤트 객체 모두 keyCode 속성을 지원합니다.
IVkeydown, keyup 이벤트와 관계없이 발생하는 특수한 상황은 다음과 같습니다.
□Firefox, Opera에서는 세미콜론 키를 눌렀을 때 keyCode 값이 ASCII 값인 59인데, IE와 Safari는 return을 반환합니다. 186, 키보드 키코드
□ 이전 버전의 사파리 3에서는 상하좌우, 페이지 상하가 6300보다 큰 값을 반환했습니다.
□Opera 9.5 이전 버전에서는 숫자가 아닌 알파벳 키의 keyCode가 ASCII 인코딩으로 설정됩니다.
□Safari 3 이전 버전에서는 Tab, Shift, Control 또는 대체 키를 눌러도 keydown 및 keyup 이벤트가 트리거되지 않았습니다.
4.3.2 문자 인코딩
□Firefox, Chrome, Safari의 이벤트 객체는 charCode 속성을 지원합니다. 이 속성은 키를 눌렀을 때만 값을 가지며 문자의 ASCII 인코딩입니다. 이때 keyCode 값은 0일 수도 있고, 누른 키코드일 수도 있습니다.
□IE와 Opera는 ASCII 인코딩을 keyCode에 저장합니다.
□크로스 브라우저 문자 인코딩
var EventUtil = {
//생략된 코드
getCharCode: function(event){
if(typeof event.charCode == "number") {
return event.charCode;
}else{
return event.keyCode;
}
},
4.3.4 textInput 이벤트
□언제 사용자가 편집 가능한 영역에 문자를 입력하면 textInput 이벤트가 트리거됩니다.
◇편집 영역에서만 textInput 이벤트를 트리거할 수 있습니다.
◇실제 문자를 입력할 수 있는 키를 눌렀을 때만 이벤트가 발생합니다.
◇이벤트 객체에는 사용자가 입력한 문자를 저장하기 위한 데이터 속성이 포함되어 있습니다.
□2008년 상반기에는 Safari3와 Chrome만 지원합니다.
4.3.4 기기의 키보드 이벤트. (생략)
4.4 HTML 이벤트
①정의: HTML 이벤트는 반드시 사용자 조작과 관련이 없는 이벤트를 말합니다.
□로드 이벤트:
◇페이지가 완전히 로드되면 창에서 발생합니다.
◇모든 프레임이 로드될 때 프레임세트에서 트리거
◇이미지가 로드될 때 요소에서 트리거
◇삽입된 콘텐츠가 로드될 때

Python과 JavaScript의 주요 차이점은 유형 시스템 및 응용 프로그램 시나리오입니다. 1. Python은 과학 컴퓨팅 및 데이터 분석에 적합한 동적 유형을 사용합니다. 2. JavaScript는 약한 유형을 채택하며 프론트 엔드 및 풀 스택 개발에 널리 사용됩니다. 두 사람은 비동기 프로그래밍 및 성능 최적화에서 고유 한 장점을 가지고 있으며 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

Python 또는 JavaScript를 선택할지 여부는 프로젝트 유형에 따라 다릅니다. 1) 데이터 과학 및 자동화 작업을 위해 Python을 선택하십시오. 2) 프론트 엔드 및 풀 스택 개발을 위해 JavaScript를 선택하십시오. Python은 데이터 처리 및 자동화 분야에서 강력한 라이브러리에 선호되는 반면 JavaScript는 웹 상호 작용 및 전체 스택 개발의 장점에 없어서는 안될 필수입니다.

파이썬과 자바 스크립트는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구와 개인 선호도에 따라 다릅니다. 1. Python은 간결한 구문으로 데이터 과학 및 백엔드 개발에 적합하지만 실행 속도가 느립니다. 2. JavaScript는 프론트 엔드 개발의 모든 곳에 있으며 강력한 비동기 프로그래밍 기능을 가지고 있습니다. node.js는 풀 스택 개발에 적합하지만 구문은 복잡하고 오류가 발생할 수 있습니다.

javaScriptisNotBuiltoncorc; it'SangretedLanguageThatrunsonOngineStenWrittenInc .1) javaScriptWasDesignEdasAlightweight, 해석 hanguageforwebbrowsers.2) Endinesevolvedfromsimpleplemporectreterstoccilpilers, 전기적으로 개선된다.

JavaScript는 프론트 엔드 및 백엔드 개발에 사용할 수 있습니다. 프론트 엔드는 DOM 작업을 통해 사용자 경험을 향상시키고 백엔드는 Node.js를 통해 서버 작업을 처리합니다. 1. 프론트 엔드 예 : 웹 페이지 텍스트의 내용을 변경하십시오. 2. 백엔드 예제 : node.js 서버를 만듭니다.

Python 또는 JavaScript는 경력 개발, 학습 곡선 및 생태계를 기반으로해야합니다. 1) 경력 개발 : Python은 데이터 과학 및 백엔드 개발에 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 적합합니다. 2) 학습 곡선 : Python 구문은 간결하며 초보자에게 적합합니다. JavaScript Syntax는 유연합니다. 3) 생태계 : Python에는 풍부한 과학 컴퓨팅 라이브러리가 있으며 JavaScript는 강력한 프론트 엔드 프레임 워크를 가지고 있습니다.

JavaScript 프레임 워크의 힘은 개발 단순화, 사용자 경험 및 응용 프로그램 성능을 향상시키는 데 있습니다. 프레임 워크를 선택할 때 : 1. 프로젝트 규모와 복잡성, 2. 팀 경험, 3. 생태계 및 커뮤니티 지원.

서론 나는 당신이 이상하다는 것을 알고 있습니다. JavaScript, C 및 Browser는 정확히 무엇을해야합니까? 그들은 관련이없는 것처럼 보이지만 실제로는 현대 웹 개발에서 매우 중요한 역할을합니다. 오늘 우리는이 세 가지 사이의 밀접한 관계에 대해 논의 할 것입니다. 이 기사를 통해 브라우저에서 JavaScript가 어떻게 실행되는지, 브라우저 엔진의 C 역할 및 웹 페이지의 렌더링 및 상호 작용을 유도하기 위해 함께 작동하는 방법을 알게됩니다. 우리는 모두 JavaScript와 브라우저의 관계를 알고 있습니다. JavaScript는 프론트 엔드 개발의 핵심 언어입니다. 브라우저에서 직접 실행되므로 웹 페이지를 생생하고 흥미롭게 만듭니다. 왜 Javascr


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

Dreamweaver Mac版
시각적 웹 개발 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!