2014-06-11 7 views
2

안녕 얘들 아 여기서 도움이 필요해. 정규 표현식에 새로운입니다RegExp uncaught TypeError : null의 속성 '1'을 읽을 수 없습니다.

이 코드를 발견했습니다; 브라우저 버전을 검출

navigator.appVersion.match(/MSIE ([\d.]+)/)[1];

. 이 코드는 아래 IE 8에서 작동하지만 Google 크롬에서는 작동하지 않습니다. Google 크롬의 오류가 발생했습니다.

Uncaught TypeError: Cannot read property '1' of null

하고이 코드가 속한 라인 포인트;

navigator.appVersion.match(/MSIE ([\d.]+)/)[1];

방법이 문제를 해결하려면 어떤 생각?

var version = navigator.appVersion.match(/MSIE ([\d.]+)/)[1]; 

if(version <= 8.0) 

{ 
    execute code; 
} 

모두가 IE에서 잘 작동하지만 구글 크롬에서 오류가 발생했습니다 :


단지 내가 여기 달성하기 위해 노력하고있어 상황이 명확하게 제시하는 것은 브라우저 버전을 감지하는 것입니다 :

catch되지 않는 형식 오류가 : 널 (null)

의 '1'속성을 읽을 수 없습니다 그것은 라인에 곳이 코드 벨 포인트 ongs;

navigator.appVersion.match (/ MSIE ([\ d.] +) /) [1];

답변

2

matchcan returnnull regexp가 아무 것도 찾지 못하면. 따라서 먼저 성냥을 가져와 일치 여부를 확인해야합니다. 시도해보십시오.

var ieMatches = navigator.appVersion.match(/MSIE ([\d.]+)/); 
var isIE = !!ieMatches[1]; 
+0

실제 문제를 설명하기 만하면됩니다. 기본적으로 [1]은 배열에서 두 번째 항목을 가져 오는 것을 의미합니다. 일치하는 항목이 없으면 null이 반환되므로 배열이 아닌 항목에서 두 번째 항목을 가져 오려고합니다. 희망이 이해가 :) – PeteAUK

관련 문제