나에게 iframe은 순수한 악입니다 (글쎄, 그렇게 순수하지 않을 수도 있습니다). 그들은 많은 문제를 일으키는 것 같습니다. 예, 전체 사이트가 한 번로드되면 단일 페이지 만로드 할 수 있습니다. 그러나 사람들은 이러한 목적으로 AJAX를 발명했습니다.
내가 찾은 가장 큰 문제 iframe
중 하나는 URL이 변경되지 않았기 때문에 하위 페이지 중 하나에 대한 링크를 붙여 넣을 수 없다는 것입니다 (예, 이에 대한 해결 방법이 있음을 알고 있습니다). 둘째, 웹 검색 엔진은 해당 사이트를 올바르게 색인화하는 데 문제가있을 수 있습니다.
때때로이 사이트의 접근성이 더 나빠져서 일부 브라우저가 사이트를 부적절하게 표시 할 수도 있습니다.
(i) 프레임없이 레이아웃을 디자인하는 더 좋은 방법이 있습니다. 매일 나는 “How to access iframe with jQuery?”와 같은 질문을하는 것을 볼 수있다.
그렇다면 iframe의 이점은 무엇입니까? 여전히 사용하는 이유는 무엇입니까? 이유를 알고 싶습니다. 🙂
(진짜 질문이 아니기 때문에 CW)
답변
사람들이 AJAX 대신 iframe을 계속 사용하는 두 가지 이유 (현재)를 생각할 수 있습니다.
1) Iframe은 도메인 간 원본 정책을 우회합니다 (이미지, 스크립트 및 스타일은 그렇지 않음). 이는 상대적으로 안전하게 다른 도메인 이름에서 사이트 / 콘텐츠를 가져 오는 데 유용 할 수 있습니다. 기본적으로이를 통해 다른 도메인의 데이터를 무제한 액세스로 페이지 전체를 밟지 않고 시각적으로 표시 할 수 있다는 이점이 있습니다 (예 : JSONP와 같은 작업이 가능함).
2) 특정 MIME 유형뿐만 아니라 iframe 내에서 여러 유형의 리소스를로드 할 수 있습니다 (애플리케이션 / javascript, application / x-javascript, text / css, text / xml, image / png, image로 비교적 제한됨). / jpeg, image / gif with scripts, XHR, images, and sources). 예를 들어 PDF를 표시하려면 iframe을 열고 Adobe Reader 플러그인이 해당 파일을 표시하도록 할 수 있습니다. 또한 동일한 도메인에서 스크립트, 스타일 및 이미지를 모두 함께 파이프 라인하려면 (페이지에서 인라인으로 이미지가 데이터 URI 여야 함) iframe을 사용하여이 작업을 수행 할 수 있습니다 (동일한 경우 도메인, 포트 및 프로토콜도 JavaScript로 액세스 할 수 있습니다.)
Gmail이 iframe 집합이라는 것을 알고 계셨습니까? 보이는 부분은 영리한 위치입니다. 또한 많은 OAuth 구현 (Twitter, Facebook, Google, Yahoo!)은 일반적으로 iframe을 사용하여 도메인의 사용자를 성공적인 인증 URL (사용자 로그인 후)과 연결합니다.
답변
IFRAME은 타사 콘텐츠를 웹 사이트에 포함하고 격리하는 데 사용됩니다.
대부분의 웹 광고 솔루션은 iframe을 기반으로합니다. 보안 (도메인 간 정책)과 타사 콘텐츠 및 스크립팅 (일반적인 사용 사례는 광고)로 완전히 관리 할 수있는 화면에 격리 된 사각형을 제공하기 때문입니다.
IFRAMES의 또 다른 현대적 사용은 AJAX 애플리케이션의 히스토리 관리 (일반적인 뒤로 단추 해결 방법)입니다.
FRAME은 IFRAMES의 열악한 버전입니다. 그들의 사용은 감소하고 있습니다.
답변
사용자가 자바 스크립트를 비활성화 한 경우 ajax가 작동하지 않을 때 iframe이 작동합니다. 사람들이 NoScript 같은 것을 사용한다는 점을 고려할 때 이것은 의문의 여지가 없습니다 .
답변
페이지를 다시로드하지 않고 파일을 업로드해야 할 때 ajax 웹 사이트에서 사용합니다.
답변
인증 된 사용자에 대한 헤더 정보를 주입 한 다음 iframe을 통해 실제 애플리케이션으로 전달되는 단일 사인온을 제공하는 대기업에서 여전히 iframe이 사용되고 있습니다. iframe을 둘러싼 “포털”은 모든 특정 인증 세부 정보를 처리하므로 그 뒤에있는 애플리케이션은 각각에 대한 구현을 가질 필요가 없으므로 개발 팀이 작업을 더 쉽게 만들고 인증 세부 정보를 모니터링하고 조정할 수있는 단일 위치를 갖게됩니다. 사용자의.
답변
이를 사용하는 기술적 인 이유가 많이 있습니다 (특히 Dan Beam이 언급 한 보안 문제).
하지 말아야 할 일은 iframe 만 업데이트하여 새 페이지로 이동하는 “프레임과 같은”iframe을 사용하는 것입니다. 당신이 말했듯이, 이것은 탐색이 북마크 가능 / 링크 가능하지 못하게하고, 일반 탐색 버튼에 응답하고, 새 탭에서 열기와 같은 유용한 링크 어포던스를 제공합니다.
그러나 그것은 iframe에만 국한되지 않습니다. 새 콘텐츠를 가져 와서 XMLHttpRequest
기본 콘텐츠 div의에 작성 하여 탐색이 수행되는 페이지를 점점 더 많이 볼 수 있습니다 innerHTML
. 종종 이것은 jQuery load()
및 영리한 슬라이드 애니메이션으로 수행됩니다. 이것은 iframe-used-as-frame 또는 실제로 구식 프레임 셋만큼 탐색을 중단시킵니다. 어제의 멸시받는 프레임 셋의 새로운 스킨 일 때 많은 웹 작성자가이 전략을 초현대적 인 웹 디자인 방법론이라고 믿고 사용하는 것은 부끄러운 일입니다.
두 경우 모두 문제를 해결할 수 있지만 이는 #
조각 식별자 부분에 viewstate를 저장하고 적절한 해시 탐색을 지원 해야 함을 의미합니다 . 그럼에도 불구하고 검색 엔진과 같은 비 JS 에이전트에는 여전히 문제가 있습니다. 둘 다 지원하려면 병렬 ?
기반 및 #
기반 탐색이 필요합니다. 고통스럽고 대부분은 신경 쓰지 않습니다.
답변
프레임 셋은 HTML 5에서 구식이며 때로는 사이트 내에 다른 사이트가있는 프레임이 필요합니다. 또한 AJAX는 많은 일을 할 수 있습니다. iframe없이 https를 통해 다른 도메인의 사이트에 파일을 업로드 해보세요. AJAX는 당신을 도울 수 없습니다.