2013-09-06 6 views
0

그래서 난 내 페이지에 자바 스크립트의 다음 행이 있습니다값이 "string"인 문자열이 일종의 예약어입니까?

form.display.value = 'Error'; 
표시 내 페이지에 텍스트를 입력하는 입력입니다

:이 잘 값을 작동 크롬에서

<input type="text" id="calcDisplay" name="display" maxlength="25"> 

입력 요소는 "오류"입니다. 하지만 IE 10과 Firefox에서 입력 내용은 다음과 같습니다.

function Error() { [native code]} 

여기에 무슨 일이 일어나고 있는지 설명 할 수있는 사람이 있습니까?

UPDATE :이 호출되는 실제 함수 :

function compute(form) { 
    try { 
     form.display.value = eval(form.display.value); 
    } catch(e) { 
     form.display.value = 'Error'; 
    } 
} 

그리고 여기 그래서 너희들은 내가 미쳤다고 생각하지 않습니다 그것의 비디오입니다 :

http://screencast.com/t/sq9xXrnf

+1

* ""Error "라는 문자열이 Javascript에서 예약어 일종인가?", Err, no, 확실히 아닙니다. 예약어가 작동하는 방식이 아닙니다. 문자열은 문자열이고 예약 된 문자열은 없습니다. – meagar

+0

그래서이 문제의 원인은 무엇입니까? – Marko

+0

'display' 입력 값을 어떻게 검사하고 있습니까? – Jacob

답변

2

Error이 이미 입력되어있는 경우 다음 줄이 표시됩니다.

form.display.value = eval(form.display.value); 

... 이전에 정의한 Error 함수로 평가할 것입니다. 따라서이 메시지는 compute 함수에 대한 두 번째 호출에서 발생해야합니다.

브라우저가 eval의 작동 방식과 일치하지 않으므로 브라우저 차이가 발생합니다.

+2

OP가 처음에 임의의 입력을 '평가'해서는 안된다는 사실을 제쳐 놓고. – Doorknob

+0

@Doorknob 그러면 eval을 사용하지 않고 클라이언트 측 계산기를 수행하는 방법에 대한 제안이 있습니까? 어떻게하면 목적이 간단한 계산기라는 사실을 고려하여 app에서 위험한 eval을 사용하고 있습니까? – Marko