>  기사  >  웹 프론트엔드  >  웹페이지가 새 창에서 열립니다. target=_blank가 표준을 충족하지 않습니다_Experience exchange

웹페이지가 새 창에서 열립니다. target=_blank가 표준을 충족하지 않습니다_Experience exchange

WBOY
WBOY원래의
2016-05-16 12:05:502191검색

"(이 HTML 버전에서는) 이 요소에 대한 속성 대상이 없습니다."

원래 HTML4.01/XHTML1.0/XHTML1.1 엄격한 DOCTYPE에서는 target="_blank", target="_self" 구문이 유효하지 않으며 JavaScript를 통해서만 구현할 수 있습니다.

친구가 왜 target="_blank"를 사용할 수 없는지 물었습니다. 이 속성은 매우 편리합니다. 하하, W3C 전문가들은 어떻게 생각하는지 모르겠습니다. 제가 아는 한 주로 "사용 편의성과 친근함"에 관한 것입니다. 외국인들은 사용자의 동의나 명확한 안내 없이 새 창을 여는 것이 무례하다고 생각하기 때문입니다. 의. 이번 취소가 합리적인지 여부를 떠나 해결책을 살펴보겠습니다.

rel 속성
HTML4.0에는 rel이라는 새로운 속성이 추가되었습니다. 이 속성은 링크와 링크가 포함된 페이지 간의 관계 및 링크 대상을 설명하는 데 사용됩니다. rel에는 다음, 이전, 장, 섹션 등과 같은 많은 속성 값이 있습니다. 우리가 사용하고 싶은 것은 rel="external" 속성입니다. 원래 작성된 코드는 다음과 같습니다.


새 창 열기


이제 다음과 같이 작성해야 합니다. 새 창 열기

엄격한 표준 방식입니다. 물론 자바스크립트와 결합해야 효과적이다.

javascript
JS 전체 코드는 다음과 같습니다.

function externallinks() {
if (!document.getElementsByTagName) return
var 앵커s = document.getElementsByTagName (" a");
for (var i=0; i var 앵커 = 앵커[i]
if (anchor.getAttribute("href") &&
앵커.getAttribute("rel") == "외부")
앵커.타겟 = "_blank"
}
}
window.onload =

당신은 .js 파일(예: external.js)로 저장한 후 외부 연결 방법을 통해 호출할 수 있습니다:


그게 전부입니다.

마지막으로 내 웹사이트에서 사용하는 target="new"는 과도기 DOCTYPE에서 허용되지만 엄격한 기준을 충족하지 않습니다. 다음 개정판에서는 엄격 모드를 사용하고 모든 target="new"를 rel="external"로 변경하겠습니다.

이 문서는 다음 문서를 참조합니다.

Kevin Yank의 "표준 준수 세계의 새 창 링크"
"target="_blank"에 대한 표준 기반 교체 외부 링크 》
2006.7.13 업데이트
많은 포털사이트 홈페이지가 모두 팝업으로 되어 있는데, 적어도 중국에서는 이 개념을 바꿀 필요가 없을 것 같습니다. 각 링크 아래에 rel을 추가하려면 전체 코드는 다음과 같습니다.

<script></script> <script>//<![CDATA[ <BR>function externalLinks() { <BR> if (!document.getElementsByTagName) return; <BR> var anchors = document.getElementsByTagName("a"); <BR> for (var i=0; i<anchors.length; i++){ <BR> var anchor = anchors; <BR> if (anchor.getAttribute("href")) <BR> anchor.target ="_blank"; <BR> } <BR>} <BR>window.onload = externalLinks; <BR>//]]></script>

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