원래 브라우저가 IE인지 판단할 때 navigator.userAgent에서 항상 MSIE를 사용할 수 있었지만 IE11이 변경되어 userAgent에는 더 이상 MSIE 필드가 포함되지 않습니다.
실제 프로젝트에서는 콘솔의 오류 보고와 관련된 유사한 문제가 발생했습니다. , 브라우저 모델을 확인할 때 구체적인 방법은 다음과 같습니다.
function getBrowserInfo(){
var Sys = {};
var ua = navigator.userAgent.toLowersCase();
var re = /( msie 나는 파이어폭스 | 오페라 | 버전).*?([d.]+)/;
var m = ua.match(re);
Sys.browser = m[1].replace(/version/ , "'safari'");
Sys.ver = m[2];
return;
}
이 방법에 따르면 Sys에서 특정 브라우저 정보를 얻을 수 있고, 이를 직접 호출할 수 있습니다.
그런데 프로덕션 환경에서 갑자기 로그인이 되지 않습니다. 사용자 피드백은 IE11을 작업에 사용하므로 IE11을 직접 테스트에 사용한다는 것입니다.
【 SCRIPT5007: 얻을 수 없습니다. 정의되지 않음 또는 null 참조 속성" 1” ]
오류 표시 위치에 따라 정규 매칭 후 위치 지정 후 m을 얻을 수 없습니다.
해결 후 ie11 브라우저 navigator.userAgent가 변경되어 구체적으로 다음과 같이 변경되었습니다.
"Mozilla/ 5.0(Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Shuame; rv:11.0) like Gecko ";
따라서 일반 판단을 바꾸십시오: var re = /(msie I firefox | chrome | Opera | version | rv:).*?([d.]+)/;
이렇게 하면 문제가 해결되고, ie11 호환성이 크게 개선되었으며, 앞으로도 계속 개선해야 할 부분이 많습니다. . . . . . . . . . . . . . . . . . .
위 내용은 IE11에서 navigator.userAgent 변경 사항의 예제 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!