사람들이 여전히 iframe을 사용하는 이유는 무엇입니까? [닫은]


89

나에게 iframe은 순수한 악입니다 (글쎄, 그렇게 순수하지 않을 수도 있습니다). 그들은 많은 문제를 일으키는 것 같습니다. 예, 전체 사이트가 한 번로드되면 단일 페이지 만로드 할 수 있습니다. 그러나 사람들은 이러한 목적으로 AJAX를 발명했습니다.

내가 찾은 가장 큰 문제 iframe중 하나는 URL이 변경되지 않았기 때문에 하위 페이지 중 하나에 대한 링크를 붙여 넣을 수 없다는 것입니다 (예, 이에 대한 해결 방법이 있음을 알고 있습니다). 둘째, 웹 검색 엔진은 해당 사이트를 올바르게 색인화하는 데 문제가있을 수 있습니다.

때때로이 사이트의 접근성이 더 나빠져서 일부 브라우저가 사이트를 부적절하게 표시 할 수도 있습니다.

(i) 프레임없이 레이아웃을 디자인하는 더 좋은 방법이 있습니다. 매일 나는 "How to access iframe with jQuery?"와 같은 질문을하는 것을 볼 수있다.

그렇다면 iframe의 이점은 무엇입니까? 여전히 사용하는 이유는 무엇입니까? 이유를 알고 싶습니다. :)

(진짜 질문이 아니기 때문에 CW)


위의 Moshe에 동의합니다. Iframe의 유일한 다른 용도는 최신 CSS를 지원하지 않는 고대 웹 클라이언트 또는 일부 독점 환경입니다.
Boris Hamanov

요즘 불행히도 모든 브라우저에는 호환성 문제가 있습니다! 그들은 표준이 아닙니다! div 태그에 문제가 있고 테이블 태그에 문제가있는 등 ... 100 % 호환되는 웹 사이트를 디자인하는 데 시간을 낭비하게됩니다. IE7 과도 호환되는 웹 사이트를 만드는 마지막 방법이기도합니다. iframe을 사용하고 있습니다. iframe이 모든 문제를 패치 할 수 있습니다 : '(당신이 내 웹 사이트의 상태를 확인하는 경우, 당신은 IE7에서 많은 방문을 볼 수 있습니다 많은 사람들이 오래된 브라우저를 사용하는 경우에도 2016 년!.
마흐디 Jazini에게

답변:


102

사람들이 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 (사용자 로그인 후)과 연결합니다.


2
# 1,하지만 HTTP 헤더은 iframe을 차단할 수 있습니다 ..... 재
Pacerier

2
# 2 다시,하지만 당신은 예를 들어, iframe을하지 않고 그것을 할 수 있습니다<embed src="http://www.pdf995.com/samples/pdf.pdf" type="application/pdf">
Pacerier

4
다시 # 3, Gmail은 iframe없이 다시 작성할 수 있습니다. 그렇다면 사람들은 왜 여전히 최신 브라우저에 iframe을 사용합니까? 질문은 답이 없습니다.
Pacerier

22

IFRAME은 타사 콘텐츠를 웹 사이트에 포함하고 격리하는 데 사용됩니다.

대부분의 웹 광고 솔루션은 iframe을 기반으로합니다. 보안 (도메인 간 정책)과 타사 콘텐츠 및 스크립팅 (일반적인 사용 사례는 광고)로 완전히 관리 할 수있는 화면에 격리 된 사각형을 제공하기 때문입니다.

IFRAMES의 또 다른 현대적 사용은 AJAX 애플리케이션의 히스토리 관리 (일반적인 뒤로 단추 해결 방법)입니다.

FRAME은 IFRAMES의 열악한 버전입니다. 그들의 사용은 감소하고 있습니다.


1
이것은 많은 간단하고 :) 광고의 좋은 예
월드

15

사용자가 자바 스크립트를 비활성화 한 경우 ajax가 작동하지 않을 때 iframe이 작동합니다. 사람들이 NoScript 같은 것을 사용한다는 점을 고려할 때 이것은 의문의 여지가 없습니다 .


4
이것은 사실이지만 iframe을 변경 / 추가 / 조작하려면 대부분의 경우 JavaScript가 필요합니다 (생각 할 수있는 2 제외, 대상에 연결 및 대상에 <form>게시).
Dan Beam

권리; 그럼에도 불구하고 iframe이 JS 사용을 가리키는 것을 변경하려면 일반적으로 XMLHttpRequest.
Reinderien

7

페이지를 다시로드하지 않고 파일을 업로드해야 할 때 ajax 웹 사이트에서 사용합니다.


@Mwizak Ajax는 각도를 포함한 모든 종류의 자바 스크립트를 커버해야합니다.
CodeReaper

3

인증 된 사용자에 대한 헤더 정보를 주입 한 다음 iframe을 통해 실제 애플리케이션으로 전달되는 단일 사인온을 제공하는 대기업에서 여전히 iframe이 사용되고 있습니다. iframe을 둘러싼 "포털"은 모든 특정 인증 세부 정보를 처리하므로 그 뒤에있는 애플리케이션은 각각에 대한 구현을 가질 필요가 없으므로 개발 팀이 작업을 더 쉽게 만들고 인증 세부 정보를 모니터링하고 조정할 수있는 단일 위치를 갖게됩니다. 사용자의.


도메인, 프로토콜 및 포트가 일치하지 않는 한 (즉, 다른 문제가 있음을 의미) XMLHttpRequest ( w3.org/TR/XMLHttpRequest/#the-setrequestheader-method )로 헤더를 추가 할 수없는 이유를 알 수 없습니다. 헤더)?
Dan Beam

요점은 두 가지 다른 응용 프로그램이며 일반적으로 완전히 다른 두 가지 기술이라는 것입니다. 하나는 인증을 처리하고 다른 하나는 인증 티켓에 대해 삽입 된 헤더를 가져옵니다 (또는 필요할 때 빌드).
Kris van der Mast

3

이를 사용하는 기술적 인 이유가 많이 있습니다 (특히 Dan Beam이 언급 한 보안 문제).

하지 말아야 할 일은 iframe 만 업데이트하여 새 페이지로 이동하는 "프레임과 같은"iframe을 사용하는 것입니다. 당신이 말했듯이, 이것은 탐색이 북마크 가능 / 링크 가능하지 못하게하고, 일반 탐색 버튼에 응답하고, 새 탭에서 열기와 같은 유용한 링크 어포던스를 제공합니다.

그러나 그것은 iframe에만 국한되지 않습니다. 새 콘텐츠를 가져 와서 XMLHttpRequest기본 콘텐츠 div의에 작성 하여 탐색이 수행되는 페이지를 점점 더 많이 볼 수 있습니다 innerHTML. 종종 이것은 jQuery load()및 영리한 슬라이드 애니메이션으로 수행됩니다. 이것은 iframe-used-as-frame 또는 실제로 구식 프레임 셋만큼 탐색을 중단시킵니다. 어제의 멸시받는 프레임 셋의 새로운 스킨 일 때 많은 웹 작성자가이 전략을 초현대적 인 웹 디자인 방법론이라고 믿고 사용하는 것은 부끄러운 일입니다.

두 경우 모두 문제를 해결할 수 있지만 이는 #조각 식별자 부분에 viewstate를 저장하고 적절한 해시 탐색을 지원 해야 함을 의미합니다 . 그럼에도 불구하고 검색 엔진과 같은 비 JS 에이전트에는 여전히 문제가 있습니다. 둘 다 지원하려면 병렬 ?기반 및 #기반 탐색이 필요합니다. 고통스럽고 대부분은 신경 쓰지 않습니다.


HTML5의 History API를 기대하면 다시로드하거나 뒤로 / 앞으로 버튼을 끊지 않고도 콘텐츠를 가져올 수 있습니다.
Lie Ryan

2

프레임 셋은 HTML 5에서 구식이며 때로는 사이트 내에 다른 사이트가있는 프레임이 필요합니다. 또한 AJAX는 많은 일을 할 수 있습니다. iframe없이 https를 통해 다른 도메인의 사이트에 파일을 업로드 해보세요. AJAX는 당신을 도울 수 없습니다.


2

다른 이유 외에도 iframe응용 프로그램에서의 특정 용도가 있습니다. 불행히도 제 경우의 대상 브라우저는 Internet Explorer 6. 내 웹 페이지에 고정 된 바닥 글과 머리글이 필요합니다. 이 페이지의 주요 부분은 스크롤 가능합니다.

그러나 IE6 에는 CSS 속성을 사용하여 요소 div위에 요소를 표시 할 수없는 버그가 있습니다. 따라서이 문제를 피하기 위해 해킹으로 사용할를 만들어야합니다 .selectz-indexiframe

물론 이것은 정말로 구체적인 사용법 iframe이며 유일한 관심사입니다 IE6...



1

저는 소셜 네트워크를 구축하고 있었는데 iframe이 위젯이 다른 사람들의 웹 사이트에 미니 프로필처럼 표시되거나 원격 서버의 콘텐츠와 통합되는 데 유용하다는 것을 알았습니다. 이것을 만드는 가장 간단한 방법 인 것 같습니다. 일부 위젯은 JavaScript를 사용한다는 것을 알고 있습니다. 또한 iframe 방법을 사용하면 세션이 정상적으로 사이트를 방문하는 것과 동일하므로 유사한 버튼에 적합합니다.


0

많은 형식의 텍스트 편집기 (예 : TinyMCE, HTMLArea)가 iframe으로 구현됩니다.


이것은 FireFox IIRC 때문입니다.
alex

0

iFrame은 X- 도메인 요청이나 매개 변수를 통해 소스에 데이터를 게시하는 등 일부 경우에 괜찮습니다. 하지만 도메인 전체에서 데이터에 액세스하고 싶을 때 CSS 파일을 사용하는 것을 선호합니다. 매개 변수를 수락하고 쿠키를 설정하고 페이지에 콘텐츠를 추가 (: before & : after)하고 시각적 피드백을 제공 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.