웹 프론트엔드 JS 튜토리얼 iframe_javascript 기술이 차지하는 메모리를 동적으로 생성하고 해제하는 방법

iframe_javascript 기술이 차지하는 메모리를 동적으로 생성하고 해제하는 방법

May 16, 2016 pm 04:37 PM
iframe 동적으로 생성됨 여유 메모리

최근 프로젝트 개발에 참여했습니다. 해당 프로젝트는 브라우저 기반 리치 클라이언트(RIA) 애플리케이션이므로 페이지에서 많은 수의 iframe이 호출됩니다. 이후 테스트에서는 브라우저 메모리가 여전히 높은 것으로 나타났으며, 특히 IE 시리즈 브라우저에서 iframe 페이지가 더 많이 열릴수록 메모리 사용량이 더 많아지는 것으로 나타났습니다. 열려 있는 iframe 페이지를 모두 닫아도 메모리 사용량이 약 400M에 도달하면 IE 브라우저가 크게 중단되지 않습니다. 분석 결과, iframe이 해제되지 않아 문제가 발생하여 닫힌 모든 iframe이 차지하는 메모리가 완전히 해제되지는 않았지만 iframe의 메모리 사용량이 계속 증가하지 않고 메모리 사용량이 증가한 것으로 나타났습니다. 전체 애플리케이션은 약 150M로 제어되었습니다.

/** 
* 动态创建iframe 
* @param dom 创建iframe的容器,即在dom中创建iframe。dom可以是div、span或者其他标签。 
* @param src iframe中打开的网页路径 
* @param onload iframe加载完后触发该事件,可以为空 
* @return 返回创建的iframe对象 
*/ 
function createIframe(dom, src, onload){ 
//在document中创建iframe 
var iframe = document.createElement("iframe"); 

//设置iframe的样式 
iframe.style.width = '100%'; 
iframe.style.height = '100%'; 
iframe.style.margin = '0'; 
iframe.style.padding = '0'; 
iframe.style.overflow = 'hidden'; 
iframe.style.border = 'none'; 

//绑定iframe的onload事件 
if(onload && Object.prototype.toString.call(onload) === '[object Function]'){ 
if(iframe.attachEvent){ 
iframe.attachEvent('onload', onload); 
}else if(iframe.addEventListener){ 
iframe.addEventListener('load', onload); 
}else{ 
iframe.onload = onload; 
} 
} 

iframe.src = src; 
//把iframe加载到dom下面 
dom.appendChild(iframe); 
return iframe; 
} 

/** 
* 销毁iframe,释放iframe所占用的内存。 
* @param iframe 需要销毁的iframe对象 
*/ 
function destroyIframe(iframe){ 
//把iframe指向空白页面,这样可以释放大部分内存。 
iframe.src = 'about:blank'; 
try{ 
iframe.contentWindow.document.write(''); 
iframe.contentWindow.document.clear(); 
}catch(e){} 
//把iframe从页面移除 
iframe.parentNode.removeChild(iframe); 
}
로그인 후 복사

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML에서 IFrame을 어떻게 자르나요? HTML에서 IFrame을 어떻게 자르나요? Aug 29, 2023 pm 04:33 PM

인라인 프레임은 HTML에서 iframe이라고 합니다. 레이블은 브라우저가 스크롤 막대와 테두리를 사용하여 다양한 문서를 표시할 수 있는 콘텐츠 내 직사각형 영역을 지정합니다. 현재 HTML 문서 내에 다른 문서를 포함하려면 인라인 프레임을 사용하십시오. 요소에 대한 참조는 HTMLiframe 이름 속성을 사용하여 지정할 수 있습니다. JavaScript에서는 name 속성을 사용하여 요소에 대한 참조도 이루어집니다. iframe은 기본적으로 현재 표시된 웹페이지 내에 웹페이지를 표시하는 데 사용됩니다. iframe을 포함하는 문서의 URL은 "src" 속성을 사용하여 지정됩니다. 구문 다음은 HTML <iframesrc="URL"title="d의 구문입니다.

iframe이 느리게 로드되는 이유는 무엇입니까? iframe이 느리게 로드되는 이유는 무엇입니까? Aug 24, 2023 pm 05:51 PM

iframe 로딩이 느린 이유에는 주로 네트워크 지연, 긴 리소스 로딩 시간, 로딩 순서, 캐싱 메커니즘 및 보안 정책이 포함됩니다. 자세한 소개: 1. 네트워크 지연. 브라우저가 iframe이 포함된 웹 페이지를 로드할 때 iframe의 콘텐츠를 얻기 위해 서버에 요청을 보내야 합니다. 네트워크 지연이 길면 콘텐츠를 얻는 데 시간이 걸립니다. 2. 리소스 로딩 시간이 길거나, 리소스 크기가 크거나, 서버 응답 시간이 길면 로딩 속도가 더욱 느려집니다. 등.

iframe의 데이터 ID는 무엇을 의미합니까? iframe의 데이터 ID는 무엇을 의미합니까? Aug 28, 2023 pm 02:25 PM

iframe의 data-id는 특정 요소의 식별자를 저장하기 위해 HTML 태그에 사용되는 맞춤 속성을 나타냅니다. data-id 속성을 사용하면 iframe 요소에 고유 식별자를 추가하여 JavaScript에서 조작하고 액세스할 수 있습니다. data-id 속성의 이름 지정은 특정 요구 사항에 따라 사용자 정의할 수 있지만 일반적으로 고유성과 가독성을 보장하기 위해 일부 명명 규칙을 따릅니다. data-id 속성은 특정 iframe을 식별하고 조작하는 데에도 사용할 수 있습니다.

Microsoft: Outlook 오류는 방문할 때마다 'TokenFactoryIframe' 파일을 다운로드합니다. Microsoft: Outlook 오류는 방문할 때마다 'TokenFactoryIframe' 파일을 다운로드합니다. Apr 19, 2023 am 08:25 AM

사용자가 Safari를 통해 이메일 서비스에 액세스할 때 Microsoft Outlook은 macOS에서 "TokenFactoryIframe"이라는 신비한 파일을 다운로드하고 있습니다. 이 문제는 이제 방문할 때마다 Outlook이 다운로드하는 "TokenFactoryIframe" 파일을 발견한 사용자들에 의해 널리 보고되었습니다. Outlook은 몇 초마다 또는 적어도 Apple 플랫폼에서 Outlook에 액세스할 때마다 이 신비한 파일을 다운로드합니다. 조사 결과에 따르면 이는 Outlook에 게시된 잘못된 서버 측 업데이트로 인해 발생하는 문제인 것으로 보이며 Safari 또는 macOS와는 관련이 없습니다. 마이크로소프트의 사본

iframe을 대체할 수 있는 기술 iframe을 대체할 수 있는 기술 Aug 24, 2023 pm 01:53 PM

iframe을 대체할 수 있는 기술에는 Ajax, JavaScript 라이브러리 또는 프레임워크, 웹 구성 요소 기술, 프런트 엔드 라우팅 및 서버 측 렌더링이 포함됩니다. 자세한 소개: 1. Ajax는 동적 웹 페이지를 만드는 데 사용되는 기술입니다. 전체 페이지를 새로 고치지 않고도 백그라운드에서 서버와 데이터를 교환하여 페이지의 비동기 업데이트를 달성할 수 있습니다. Ajax를 사용하면 콘텐츠를 보다 유연하게 로드하고 표시할 수 있으며, 다른 페이지를 삽입하기 위해 iframe을 사용할 필요가 없습니다. 또는 React 등과 같은 프레임워크.

iframe의 로딩 이벤트는 무엇입니까? iframe의 로딩 이벤트는 무엇입니까? Aug 28, 2023 pm 01:55 PM

iframe의 로딩 이벤트에는 onload 이벤트, onreadystatechange 이벤트, onbeforeunload 이벤트, onerror 이벤트, onabort 이벤트 등이 포함됩니다. 자세한 설명: 1. onload 이벤트는 iframe을 로드한 후 실행될 JavaScript 코드를 지정합니다. 2. onreadystatechange 이벤트는 iframe 상태가 변경될 때 실행될 JavaScript 코드를 지정합니다.

golang 함수에서 새 함수를 동적으로 생성하기 위한 팁 golang 함수에서 새 함수를 동적으로 생성하기 위한 팁 Apr 25, 2024 pm 02:39 PM

Go 언어는 클로저와 리플렉션이라는 두 가지 동적 함수 생성 기술을 제공합니다. 클로저는 클로저 범위 내의 변수에 대한 액세스를 허용하며 리플렉션은 FuncOf 함수를 사용하여 새 함수를 생성할 수 있습니다. 이러한 기술은 HTTP 라우터를 사용자 정의하고 고도로 사용자 정의 가능한 시스템을 구현하며 플러그 가능한 구성 요소를 구축하는 데 유용합니다.

Python에서 iframe은 무엇을 의미합니까? Python에서 iframe은 무엇을 의미합니까? Aug 25, 2023 pm 03:24 PM

Python의 iframe은 웹 페이지에 다른 웹 페이지나 문서를 삽입하는 데 사용되는 HTML 태그입니다. Python에서는 다양한 라이브러리와 프레임워크를 사용하여 iframe을 처리하고 조작할 수 있으며, 그 중 가장 일반적으로 사용되는 것은 웹 페이지에서 iframe의 콘텐츠를 쉽게 추출하고 조작하고 처리할 수 있는 BeautifulSoup 라이브러리입니다. iframe을 처리하고 조작하는 방법을 아는 것은 웹 개발과 데이터 스크래핑 모두에 매우 유용합니다.

See all articles