지난주 Microsoft는 공식적으로 Windows 8.1로 Internet Explorer 11의 첫 번째 미리보기를 시작했습니다. 이런 식으로,이 논란의 여지가있는 유출 된 버전의 웹 브라우저에 대한 모든 소문에 대한 모든 소문에 대한 시간입니다. 우리는 이제 WebGL, Prefetch (Translator 's Note : Preread, Preread, Preread, Translation이 올바른지 여부), Prerender (Prepreationation), Flexbox, Mutation Observers 및 기타 웹 표준을 포함하여 Internet Explorer 11에 대한 몇 가지 중요한 세부 사항을 알고 있습니다. 아마도 IE11에서 더 흥미로운 것은 IE인지 여부입니다.
Microsoft는 Internet Explorer 브라우저에서 오랫동안 일부 기능을 제거했습니다. 사용자 에이전트 문자열도 변경되었습니다. Microsoft는 자체 방식을 포기하여 기존 IE 감지 코드 브랜치가 JavaScript 또는 서버에서 Internet Explorer 11 브라우저에서 False를 반환 할 수 있도록하는 것으로 보입니다.
사용자 에이전트 변경
이전 버전과 비교하여 Internet Explorer 11의 사용자 에이전트 문자열은 짧으며 흥미로운 변경 사항이 있습니다.
코드 사본은 다음과 같습니다.
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; RV 11.0) Gecko
Windows 7의 Internet Explorer 10 용 사용자 에이전트 문자열 용.
코드 사본은 다음과 같습니다.
Mozilla/5.0 (호환 가능; MSIE 10.0; Windows NT 6.1; Wow64; Trident/6.0)
가장 분명한 차이점은 Internet Explorer 브라우저에서 사용자 에이전트 문자열의 "MSIE"태그가 제거되었다는 것입니다. 또한 사용자 에이전트의 꼬리에 "Vike Gecko"를 추가하는 것도 매력적입니다. 이것은 Internet Explorer가 인터넷 익스플로러 자체보다 도마뱀 브라우저로 인식 될 것임을 보여줍니다. Safari는 "Like Gecko"를 추가하는 최초의 브라우저로, 누구나 사용자 에이전트 문자열의 "Gecko"문자를 스니핑하여 브라우저가 통과 할 수 있도록합니다.
이제 "MSIE"를 찾는 스니핑 코드는 새로운 사용자 에이전트 문자열에서 작동하지 않습니다. "Trident"문자를 검색하여 IE 브라우저 ( "Trident"로고가 Internet Explorer와 함께 소개 됨)를 확인할 수 있습니다. Internet Explorer의 실제 버전은 "RV"로 식별됩니다.
또한 네비게이터 객체의 정보도 변경되어 브라우저가 사용되는 것을 더욱 감추고 있습니다.
navigator.appname은 "netscape"로 설정되었습니다.
Navigator.Product는 "Gecko"로 설정되었습니다.
이것은 개발자를 몰래 속이려고 시도하는 것처럼 보이지만 실제로는 HTML5가 지정되었습니다. Navigator.Product 속성은 "Gecko"여야하고 Navigator.appname도 "Netscape"또는 더 구체적이어야합니다. 그러나 Internet Explorer 11 은이 이상한 제안을 따릅니다.
네비게이터 정보의 변경으로 인한 부작용, 사용중인 JavaScript 로직을 기반으로 한 브라우저 감지를 사용할 수 없으므로 Internet Explorer 11이 도마뱀 기반 브라우저로 인식됩니다.
문서와 그의 친구들
IE4 이후 문서는 IE 브라우저에서 모든 것을 수행했습니다. 이전에 구현 된 Document.GetElementById ()는 Document와 유사합니다. 모두는 DOM 요소 참조를 얻는 IE 방법입니다. Document.all은 IE5에서 IE10까지 DOM에 대한 지원을 유지합니다. 그러나 11시 에이 시대에서 남은 제품은 False를 반환하도록 설정되었으며, 이는 Code가 실제로 문서를 사용하여 올바르게 작동하는 경우에도 IE11에서 ALL은 IE11에서 실패합니다.
또 다른 레거시는 DetacheEvent () 메소드와 유사한 이벤트 함수를 추가하는 첨부 이벤트 ()입니다. 이 방법은 IE11에서 제거되었습니다. 이 방법은 다음과 같은 논리적 판단을 피하기 위해 제거됩니다.
코드 사본은 다음과 같습니다.
함수 addevent (요소, 유형, 핸들러) {
if (element.attachevent) {
요소 .ATTACHEVENT ( "on" + 유형, 핸들러);
} else if (element.addeventListener) {
element.addeventListener (유형, 핸들러, 거짓);
}
}
물론 테스트에 가장 적합한 버전은 항상 안정적이며 표준을 충족하는 것이 좋습니다. 어느 정도는 첨부 장치를 제거해도 불편 함을 유발하지 않습니다. 그러나 인터넷은 인터넷의 기능 감지 로직 코드로 가득합니다. 첨부 검사 메소드를 제거하면 위의 방식으로 작성된 모든 코드가 IE 특정 방법 대신 표준 버전을 사용하도록합니다.
다른 제거 기능 :
window.execscript () - evay () 메소드의 즉
Window.doscroll () - 즉 창 스크롤 방법
script.onreadyStateChange- IE의로드 스크립트의 상태 변경
script.readystate - IE의 스크립트로드 상태
document.selection- 즉, 현재 선택된 텍스트, 즉
문서 .CreatestyLesheet- 즉, IE의 스타일 시트 문서를 만듭니다
Style.stylesheet- 스타일 시트를 참조하는 IE 브라우저의 스타일 객체
이러한 모든 IE 브라우저 방법은 표준 기능으로 대체됩니다. 이러한 기능과 방법을 제거한 후 표준 기능 기능 탐지를 기반으로하는 크로스 브라우저 코드는 변경없이 정상적으로 작동 할 수 있습니다.
결론적으로
IE11은 아마도 오랫동안 최고의 IE 브라우저 일 것입니다. Microsoft는 마침내 과거에 발생한 실수를 제거 할 준비를하고 있으며 현재 표준을 기반으로 브라우저로 시작할 준비가되었습니다. IE 브라우저로 인식되지 않는 이전 기능을 삭제하고 사용자 에이전트 문자열을 수정하는 것은 고유 한 관행이므로 모든 웹 사이트가 계속 작동하도록합니다. 웹 응용 프로그램에서 브라우저 스니핑 대신 기능 감지를 사용하는 경우 코드는 IE11에서 실행해야합니다. 사용자 에이전트 스니핑을 사용하는 응용 프로그램의 경우 IE11이 표준을 잘 지원하기 때문에 사용자가 기능이 좋은 웹 사이트를 볼 수 있습니다.
IE 브랜치 코드가없는 미래가 다가오고 있습니다. 함께 기대합시다.
(2013 년 7 월 2 일에 업데이트 됨), 개정에 언급 된 문서는 실제로 삭제되지 않았지만 Falsesy로 변경되었습니다.
나는 기사를 오랫동안 번역하지 않았다. 이번에는 Nicholas C. Zakas의 블로그를 번역했습니다. 원본 텍스트는 다음과 같습니다. http://www.nczonline.net/blog/2013/07/02/internet-explorer-11-dont-call-me-ie/