사람들이 여전히 iframe을 사용하는 이유는 무엇입니까? [닫은]
나에게 iframe은 순수한 악입니다 (글쎄, 그렇게 순수하지 않을 수도 있습니다). 그들은 많은 문제를 일으키는 것 같습니다. 예, 전체 사이트가 한 번로드 된 다음 단일 페이지 만로드 할 수 있습니다. 그러나 사람들은 이러한 목적으로 AJAX를 발명했습니다.
내가 찾은 가장 큰 문제 iframe
중 하나는 URL이 변경되지 않았기 때문에 하위 페이지 중 하나에 대한 링크를 붙여 넣을 수 없다는 것입니다 (예, 이에 대한 해결 방법이 있음을 알고 있습니다). 둘째, 웹 검색 엔진은 해당 사이트를 올바르게 색인화하는 데 문제가있을 수 있습니다.
때때로이 사이트의 접근성이 더 나빠져서 일부 브라우저가 사이트를 부적절하게 표시 할 수도 있습니다.
(i) 프레임없이 레이아웃을 디자인하는 더 좋은 방법이 있습니다. 매일 나는 "How to access iframe with jQuery?"와 같은 질문을하는 것을 볼 수있다.
그렇다면 iframe의 이점은 무엇입니까? 여전히 사용하는 이유는 무엇입니까? 이유를 알고 싶습니다. :)
(진짜 질문이 아니기 때문에 CW)
사람들이 여전히 AJAX 대신 iframe을 사용하는 두 가지 이유 (현재)를 생각할 수 있습니다.
1) Iframe은 도메인 간 원본 정책을 우회합니다 (이미지, 스크립트 및 스타일은 그렇지 않음). 이는 상대적으로 안전하게 다른 도메인 이름에서 사이트 / 콘텐츠를 가져 오는 데 유용 할 수 있습니다. 기본적으로이를 통해 다른 도메인의 데이터를 무제한 액세스로 페이지 전체를 밟지 않고 시각적으로 표시 할 수 있다는 이점이 있습니다 (예 : JSONP와 같은 작업이 가능함).
2) 특정 MIME 유형뿐만 아니라 iframe 내에서 여러 유형의 리소스를로드 할 수 있습니다 (application / 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을 기반으로합니다. 보안 (도메인 간 정책)과 제 3 자 콘텐츠 및 스크립팅 (일반적인 사용 사례는 광고)로 완전히 관리 할 수있는 화면에 격리 된 사각형을 제공하기 때문입니다.
IFRAMES의 또 다른 현대적 용도는 AJAX 애플리케이션의 히스토리 관리 (일반적인 뒤로 단추 해결 방법)입니다.
FRAME은 IFRAMES의 열악한 버전입니다. 그들의 사용은 감소하고 있습니다.
사용자가 자바 스크립트를 비활성화 한 경우 ajax가 작동하지 않을 때 iframe이 작동합니다. 사람들이 NoScript 같은 것을 사용한다는 점을 고려할 때 이것은 의문의 여지가 없습니다 .
페이지를 다시로드하지 않고 파일을 업로드해야 할 때 ajax 웹 사이트에서 사용합니다.
이를 사용하는 기술적 인 이유가 많이 있습니다 (특히 Dan Beam이 언급 한 보안 문제).
하지 말아야 할 일은 iframe 만 업데이트하여 새 페이지를 탐색하는 "프레임과 같은"iframe을 사용하는 것입니다. 당신이 말했듯이, 이것은 탐색이 북마크 가능 / 링크 가능하지 못하게하고, 일반 탐색 버튼에 응답하고, 새 탭에서 열기와 같은 유용한 링크 어포던스를 제공합니다.
그러나 그것은 iframe에만 국한되지 않습니다. 새 콘텐츠를 가져 와서 XMLHttpRequest
기본 콘텐츠 div에 작성 하여 탐색이 수행되는 페이지를 점점 더 많이 볼 수 있습니다 innerHTML
. 종종 이것은 jQuery load()
및 영리한 슬라이드 애니메이션으로 수행됩니다. 이것은 iframe-used-as-frame 또는 실제로 구식 프레임 세트만큼 탐색을 중단시킵니다. 어제의 멸시받는 프레임 셋의 새로운 스킨 일 때 많은 웹 작성자가이 전략을 초현대적 인 웹 디자인 방법론이라고 믿고 사용하는 것은 부끄러운 일입니다.
두 경우 모두 문제를 해결할 수 있지만 이는 #
조각 식별자 부분에 viewstate를 저장하고 적절한 해시 탐색을 지원 해야 함을 의미합니다 . 그럼에도 불구하고 검색 엔진과 같은 비 JS 에이전트에는 여전히 문제가 있습니다. 둘 다 지원하기 위해 병렬 ?
기반 및 #
기반 탐색이 필요합니다. 고통스럽고 대부분은 신경 쓰지 않습니다.
프레임 세트는 HTML 5에서 구식이며 때로는 사이트 내에 다른 사이트가있는 프레임이 필요합니다. 또한 AJAX는 많은 것을 할 수 있습니다. iframe없이 https를 통해 다른 도메인의 사이트에 파일을 업로드 해보십시오. AJAX는 당신을 도울 수 없습니다.
인증 된 사용자에 대한 헤더 정보를 주입 한 다음 iframe을 통해 실제 애플리케이션으로 전달되는 단일 사인온을 제공하는 대기업에서 여전히 iframe이 사용되고 있습니다. iframe을 둘러싼 "포털"이 모든 특정 인증 세부 정보를 처리하므로 그 뒤에있는 애플리케이션은 각각에 대한 구현을 가질 필요가 없으므로 개발 팀이 작업을 더 쉽게 만들고 인증 세부 정보를 모니터링하고 조정할 수있는 단일 위치를 갖게됩니다. 사용자의.
다른 이유 외에도 iframe
응용 프로그램에서의 특정 용도가 있습니다. 불행히도 제 경우의 대상 브라우저는 Internet Explorer 6
. 내 웹 페이지에 고정 된 바닥 글과 머리글이 필요합니다. 이 페이지의 주요 부분은 스크롤 가능합니다.
그러나 IE6 에는 CSS 속성을 사용하여 요소 div
위에 요소를 표시 할 수없는 버그가 있습니다. 따라서이 문제를 피하기 위해 해킹으로 사용할를 만들어야합니다 .select
z-index
iframe
물론 이것은 정말로 구체적인 사용법 iframe
이며 유일한 관심사입니다 IE6
...
저는 소셜 네트워크를 구축하고 있었는데 iframe이 위젯이 다른 사람들의 웹 사이트에 미니 프로필처럼 표시되거나 원격 서버의 콘텐츠와 통합되는 데 유용하다는 것을 알았습니다. 이것을 만드는 가장 간단한 방법 인 것 같습니다. 일부 위젯은 JavaScript를 사용한다는 것을 알고 있습니다. 또한 iframe 방법을 사용하면 세션이 평소와 같이 사이트를 방문하는 것과 동일하므로 같은 버튼에 적합합니다.
Javascript WYSIWYG 편집자는 iframe을 사용합니다. 이것이 가장 쉽고 가장 좋은 방법이기 때문입니다. 예를 들어 TinyMCE는 다음을 사용합니다.
많은 형식의 텍스트 편집기 (예 : TinyMCE, HTMLArea)가 iframe으로 구현됩니다.
iFrame은 X- 도메인 요청이나 매개 변수를 통해 소스에 데이터를 게시하는 등 일부 경우에 괜찮습니다. 그러나 도메인 전체에서 데이터에 액세스하고 싶을 때 CSS 파일을 사용하는 것을 선호합니다. 매개 변수를 수락하고 쿠키를 설정하고 페이지에 콘텐츠를 추가 (: before & : after)하고 시각적 피드백을 제공 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/3797179/why-do-people-still-use-iframes
'Nice programing' 카테고리의 다른 글
객체 지향 프로그래밍에서 공용, 개인 및 보호 란 무엇입니까? (0) | 2020.10.07 |
---|---|
Android에서 HTML 구문 분석 (0) | 2020.10.07 |
Reader와 InputStream의 차이점은 무엇입니까? (0) | 2020.10.07 |
왜 이것이 기본 생성자를 호출합니까? (0) | 2020.10.07 |
xUnit.net : 글로벌 설정 + 분해? (0) | 2020.10.07 |