안녕하세요~
ie9,ie10일 때 호환성보기 체크가 되어있는지를 알고 싶습니다.
ie8에서 호환성 체크가 되어 있을 때는 확인이 가능합니다..
<script type="text/javascript">
$(document).ready(function(){
var ver = getInternetExplorerVersion();
var agent = navigator.userAgent.toLowerCase();
if (ver > -1){
if(ver == 7){ // 7 일 때 (ie8에서 호환성모드이면 7로 인식 됨)
alert("7");
}
if( agent.indexOf('msie 7') > -1 && agent.indexOf('trident') > -1 ){ // 호환성모드 체크확인
alert("ie8호환성체크되어있음");
}
}
});
function getInternetExplorerVersion() {
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat(RegExp.$1);
}
return rv;
}
</script>
ie 버전도 9 인지 10인지는 알 수 있습니다.
agent.indexOf('trident') == 5.0
agent.indexOf('trident') == 6.0
이런식으로 했고요. .
그런데 9,10에서 호환성 체크가 되어 있을 때 ie7인식이 된다는데
왜 위에 소스에서는 인식을 하지 못할까요?
ie9,10에서 호환성보기 체크가 되어있을 때 알아 낼 수 있는 방법 좀 알려주세요~
감사합니다~
http://changpd.blogspot.kr/2013/04/javascript.html
참조하세요..
trident 값 체크로 버전 확인 가능합니다.
trident/4.0 = 8
trident/5.0 = 9
trident/6.0 = 10
trident/7.0 = 11
나 :
답변감사합니다.
버전 체크는 현재 되는데 ie9에서 호환성체크가 되어있을 때,
ie10에서 호환성체크가 되어있을 때를 확인하고 싶습니다.
agent.indexOf('msie 7') > -1 && agent.indexOf('trident') > -1 이 경우나
agent.indexOf('msie 7') > -1 && navigator.userAgent.match(/Trident\/(\d.\d)/i)[1] == '6.0'
agent.indexOf('msie 7') > -1 && navigator.userAgent.match(/Trident\/(\d.\d)/i)[1] == '5.0'
이런식으로 했을 때 될 것같은데 안되더라고요..
ie11 호환성 체크 해서 테스트 해봤는데 잘되거든요
호환성 체크가 되어 있는지 user agent 찍어 보시는게 좋을것 같습니다
나:
이렇게 했습니다.
<script type="text/javascript">
$(document).ready(function(){
var ver = getInternetExplorerVersion();
var agent = navigator.userAgent.toLowerCase();
var canvas = document.createElement('canvas');
var bStyle = document.body.style;
if (ver > -1){
if(ver == 7 && !('getContext' in canvas)){ // 7 일 때 (ie8에서 호환성모드이면 7로 인식 됨)
alert("ie8 호환성체크됨");
}
if( !('getContext' in canvas) && agent.indexOf('msie 9') > -1 && agent.indexOf('trident') == 51 && !('msTransition' in bStyle) && !('transition' in bStyle )){ // 호환성모드 체크확인
alert("ie9 호환성모드 체크됨");
}
if(agent.indexOf('trident') == 51 && !canvas.getContext('webgl') && agent.indexOf('msie 7') > -1 && agent.indexOf('trident') > -1 ){ // 호환성모드 체크확인
alert("ie10 호환성모드 체크됨");
}
}
});
function getInternetExplorerVersion() {
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat(RegExp.$1);
}
return rv;
}
</script>
음 로직이 잘못되어 있는것 같네요..
var ver = getInternetExplorerVersion();
ver로 리턴될수 있는 값이
호환성보기 체크가 안되어 있을 경우에는
ie7 -> 7, ie8 -> 8, ie9 -> 9, ie10 -> 10, ie11 -> -1
호환성보기 체크
ie7,ie8,ie9,ie10,ie11 -> 7
로 리턴됩니다.
그래서 호환성보기 체크되었을 경우 추가적으로
trident 값을 체크합니다.
4.0 -> 8
5.0 -> 9
6.0 -> 10
7.0 -> 11
그러니까
var ver = getInternetExplorerVersion();
에서 7이 나왔을 경우
trident의 값을 체크해서 이게 8인지, 9인지, 10인지, 11인지 체크를 한번 더 해야 한다는거죠.
나 :
음.. 이렇게 해야 한다는 걸까...
<script type="text/javascript">
$(document).ready(function(){
var ver = getInternetExplorerVersion();
var trident = navigator.userAgent.match(/Trident\/(\d)/i);
alert(ver);
alert(trident);
if (ver == 7){
if(trident == 4){
alert("ie8호환성체크");
}
if(trident == 5){
alert("ie9호환성체크");
}
if(trident == 6){
alert("ie10호환성체크");
}
}
});
function getInternetExplorerVersion() {
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer') {
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat(RegExp.$1);
}
return rv;
}
</script>
'나의질문답' 카테고리의 다른 글
checkbox 자바스크립트 실행질문이 있습니다. (0) | 2015.11.10 |
---|---|
지도에서 위경도 값 얻어오기 (0) | 2015.11.09 |
새글등록 제한시간에 관해 여쭤볼 것이 있습니다. (0) | 2015.11.02 |
서브밋 시 데이터 전달 (0) | 2015.11.02 |
submit할 때 여러 폼의 데이터를 같은 곳으로 한번에 넘기려고 합니다. (0) | 2015.11.02 |