2012-10-31 4 views
1

Sysadmin 및 코딩 무시는 간단한 작업 페이지를 만들려고합니다. 간단한 버튼으로 호출왜이 간단한 "확인"javascript 함수가 예기치 않게 작동합니까?

function run(job){ 
    var ok = confirm("Are you sure?"); 
    if(ok == true){ 
     location = 'job.php?op=' + job; 
     window.location.href = location; 
    } else { 
     window.location.reload(); 
    } 
} 

: 여기

<button style="color: red" onclick="run('test1');">Test1</button> 

키워드 나의 이해처럼, 심플 그것은 간단한 자바 스크립트 기능이 있습니다.

이 기능은 Chrome에서 작동하지만 Firefox (이 두 브라우저의 최신 버전)에서는 버튼이 작동하지 않습니다.

function run(job){ 
    var ok = confirm("Are you sure?"); 
    if(ok == true){ 
     location = 'job.php?op=' + job; 
     alert(location); 
     window.location.href = location; 
    } else { 
     window.location.reload(); 
    } 
} 

을 ... 다음 스크립트는 파이어 폭스에서 일 다음 .href 전에 간단한 경고 라인을 추가 한 스크립트를 디버깅하려고에서

스크립트는과 같이 읽도록. 나는 경고가 잠시 나타남을 볼 수 있었지만 순간적으로 방향이 바뀌었고 순간적으로 사라졌습니다. 그러나 크롬에서는 팝업이 계속 나타나서 좋은 해결 방법이 아니며 Firefox의 동작이 이상하게 나에게 내가 잘못하고 있다고 알려줍니다.

제 질문은 왜 스크립트가 일관성없는 동작을하는 것이며,이 동작이 두 브라우저 모두에서 일관되고 추가 경고()가 필요하지 않도록하려면 어떻게해야합니까?

+0

당신이 그것을 디버깅을 시도 했습니까? 콘솔 오류가 발생하고 있습니까? – zomboble

+1

'if (ok)'는'if (ok == true)'와 동일하지만 더 읽기 쉽습니다. –

답변

3

location은 그 맥락에서 window.location과 같습니다. location을 로컬 변수로 만들지 않았으므로 암시 적 전역 변수가됩니다.

다른 뭔가에 location 변수의 이름을 바꾸거나 'VAR 위치'를 사용하여 로컬 변수로 변경 :

var location = 'job.php?op=' + job; 
    alert(location); 
    window.location.href = location; 
+0

아, 변수 이름을 변경하면 그 이유가 틀림 없습니다. 감사! –

관련 문제