최근 Situ Zhengmei js The World's Shortest IE Browser Determination Code 기사에서 6바이트만 가지고 ie인지 아닌지를 판단하는 방법을 봤습니다. 코드는 다음과 같습니다.
]
사실 판단하는 방법은 여러 가지가 있는데, 대부분 브라우저의 특성을 기준으로 합니다.
예를 들어 라이브러리 프로토타입 메서드는 !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) 입니다. IE에서는 청취 이벤트 추가를 위해 window.attachEvent를 지원하고, IE가 아닌 경우에는 window.addEventListener를 사용하여 청취 이벤트를 추가한다는 점을 기준으로 판단됩니다. navigator.userAgent.indexOf('Opera') === -1은 opara 브라우저가 자신을 ie로 위장할 수 있기 때문입니다. !!(window.attachEvent)가 true이면 반대로 !window.addEventListener가 true입니다. , 그것은 또한
Ext가 !"1"[0]을 사용한다고 판단할 수 있는데, 이는 IE가 문자열에 액세스하기 위해 배열 첨자를 사용할 수 없다는 점을 활용하여 판단됩니다. ie8에서는 문제가 있는 것 같습니다.
! [1,]이 발견되기 전에는 IE를 판단하는 가장 짧은 표현이 ! "v1"이었습니다. IE가 세로 탭 문자를 지원하지 않는다는 점을 이용했습니다.
과거에는 Opera 브라우저가 IE로 위장할 수 있기 때문에 흔히 사용되는 또 다른 방법은 document.all이었습니다. 다음과 같이 작성할 수 있습니다:!!(document.all && navigator.userAgent.indexOf('Opera') === -1).
더 많은 것이 있으므로 먼저 쉽게 참조할 수 있도록 다음 몇 가지를 기억하십시오. 일하다.
1. [1,]
2.! "v1"
3.!!(window.attachEvent && navigator.userAgent.indexOf('Opera') = == -1)
4.!!(!window.addEventListener&& navigator.userAgent.indexOf('Opera') === -1)
<script>
if(!+[1,])alert("这是ie浏览器");
else alert("这不是ie浏览器");
</script>5.!!(document.all && navigator.userAgent.indexOf('오페라') === -1)