HTML 프레임

HTML의 기능 중 하나로, 한 화면에 여러 개 이상의 페이지를 함께 표시해 주는 기능. 먼 옛날에, 그러니까 XmlHttpRequest인터넷익스플로러만의 전유물이던 시절에 매우 심각하게 남용되었으나, 현재는 많이 사라진 추세이다.

종류

HTML 프레임은 그 구현 방법에 따라 세 종류로 나눌 수 있다.

  • 가로·세로 나누기를 위한 framesetframe 엘리먼트 (HTML 3.2 이후 지원)
  • 페이지의 임의 위치에 다른 창을 넣기 위한 iframe 엘리먼트 (HTML4 이후 지원)
  • XFrames (아직 초안)

이 중 맨 마지막 XFrames는 표준안이 묻혀버려서 거의 사용되지 않으며, 나머지 두 개는 HTML 표준에 계속 남아 있으나 이 중 좀 더 "전통적"이라 할 수 있는 가로·세로 나누기는 HTML5에서 폐기 예고가 된 상태이다(물론 하위 호환성때문에 한참 남아 있을 것 같지만).

가로·세로 나누기에서 프레임셋 안에 들어 있는 각 프레임은 서로 별도의 페이지를 참조할 수 있으며, 기본적으로는 다른 프레임에 영향을 주지 않고 다른 페이지를 불러 올 수 있다1). 이 기능은 현재에도 유효해서, 2ch 같이 트래픽이 엄청나게 크고, 따라서 노프레임으로 전환할 경우 트래픽이 급격히 늘어날 가능성이 큰 일부 웹사이트에서 현재까지 잘 쓰이고 있다.

iframe의 경우 프레임을 포함한 페이지와 프레임 안에서 열린 페이지는 동등한 관계가 아니며, 따라서 가로·세로로 나눌 때 얻을 수 있는 트래픽 감소는 기대할 수 없다. 다만 두 페이지가 서로 다른 도메인에 있으면서, 동일도메인정책 때문에 XmlHttpRequest를 쓸 수 없는 상황일 경우 유용할 수 있다. 여기에는 웹위젯 같은 것들이 포함된다.

프레임의 남용

안타깝게도 프레임의 원래 사용 목적을 넘어선, 그러니까 보통 HTML로 깔끔하게 만들 수 있는 것을 프레임을 써서 엉망으로 만들어 놓는 남용 사례가 한동안 있어 왔는데, 여기에는 다음이 포함된다:

  • 프레임을 주소창에 나타나는 주소가 바뀌지 않게 하기 위하여 사용하는 경우. 그러나 실질적으로는 프레임 안에 있는 페이지를 끄집어 내는 게 어렵지 않으므로 전혀 쓸모가 없다. 게다가 복사 방지를 하겠다고 안쪽에 마우스 오른 버튼 클릭 금지를 걸어 놓으면 프레임 별 새로고침이 불가능한 사태가 일어난다!
  • 프레임을 디자인 요소로 사용하는 경우. 옛날 웹사이트들 중에는 아예 각 프레임별로 플래시가 박혀 있는 경우도 볼 수 있다. 물론 CSS의 적절한 사용으로 어렵지 않게 대체할 수 있으며, 노프레임웹사이트의 유행 이후 많이 사라진 상태이다.
  • 진짜 페이지 컨텐츠를 iframe에 박아 넣는 경우. "노프레임"이라는 말이 가로·세로로 나뉜 프레임만 안 쓰는 것이라고 착각한 나머지 페이지에다가 큼지막한 iframe을 넣고 그 iframe의 내용을 고치는 것으로 프레임을 흉내내는 것이다. 물론 기존 프레임에 비해 전혀 나아진 것은 없으며, iframe의 크기를 자동으로 안의 페이지 높이에 맞게 맞추는 과정이 시간이 오래 걸리기 때문에 사용자의 짜증을 불러 일으킬 가능성이 더 크다(일부 브라우저에서는 아예 안 되기도 한다).

설마 이런 사이트가 아직도 남아 있는가? 생각한다면 오산. 아직도 꽤 남아 있다(예를 들어서 코레일 웹사이트). 제발 이러지 좀 말자.

1) 그러나 이 기능이 한참 남용되던 시절에는 프레임 기능을 주소창 바꾸지 않는 기능으로 오인한 경우가 상당해서, 페이지 전환이 일어날 때마다 새로운 프레임셋 문서를 열어 버리는 미친 페이지들도 꽤 있었다.

도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2011-05-30 18:25 | 외부 편집기