2013-02-25 2 views
1

저는 자바 스크립트 (C++은 일반적으로)에 익숙하지 않습니다.이 질문은 여러분 모두에게 아주 기본적인 것이어야한다고 생각합니다.외부 .js 파일에서 변수 변경하기 동적으로 액세스하기

외부 .js 파일에 정의 된 변수를 가져 와서 경고를 사용하여 표시하는 스크립트가 있습니다.

.html 파일의 코드는 다음과 같습니다.

<html> 
<head> 
<title></title> 
<script> 

function addScript(url){ 
    var extScript = document.createElement('script'); 
    extScript.type = 'text/javascript'; 
    extScript.src = url; 
    extScript.id = 'extScript' 

    //If there is already a script with the ID 'extScript' 
    //get rid of it 
    var headList = document.getElementsByTagName('head'); 
    var scriptList = headList[0].getElementsByTagName('script'); 
    for(var i = 0; i < scriptList.length; i++) 
    { 
     if(scriptList[i].id =='extScript') 
     { 
      document.getElementsByTagName('head')[0].removeChild(scriptList[i]); 
     } 
    } 

    document.getElementsByTagName('head')[0].appendChild(extScript); 

} 

function newNewChangeMode() 
{ 
    addScript("C:/Users/Suzaku/Documents/Javascript/controller.js"); 
    alert("Neo controllerMode variable is reading " + controllerMode); 
} 

</script> 
</head> 
<body> 
<a href="javascript:newNewChangeMode()">Get externally defined mode</a> 
</body> 
</html> 

"controller.js"파일은 다음과 같습니다.

var controllerMode = 1111; 

(그거야!)

내가 링크를 클릭

, 내 자바 스크립트 실행 "외부 모드를 정의하기"와 경고가 올바르게 표시됩니다. "Neo controllerMode 변수가 1111을 읽습니다." 내가

var controllerMode = 2222; 

에 (controller.js에) 변수 controllerMode의 정의를 변경하는 경우

그러나, 여전히 네오 controllerMode 변수는 "경고를 저장하고 (새로 고침없이) 다시 버튼을 클릭 명중 1111 "을 읽습니다. 반면에 이어야합니다. "Neo controllerMode 변수는 2222를 읽습니다."

이 스크립트가 동적으로 추가되지 않는 것 같습니다. .html을 새로 고치지 않고이 변수를 변경할 수 있어야합니다. 사전에

감사 브라우저는 자바 스크립트 파일 캐시를 검색하는 것처럼 소리

가이

+1

html을 다시로드하지 않고 내용을 새로 고치는 일반적인 방법은 ajax를 사용하는 것입니다. "controller.js?"+ new Date(). getTime()과 같은 javascript 파일에 임의의 GET 매개 변수를 추가 할 수 있습니다. ; 이것은 캐싱을 방지합니다. – x4rf41

+1

동적 스크립트가로드되어 비동기 적으로 실행되기 때문에 이것은 작동하지 않습니다. 또한 로컬 호스트 서버를 설정하여 해당 파일에 대한 액세스 제한을 실행하지 않아야합니다. –

+0

브라우저는 일반적으로 로컬 파일 액세스를 제한하며, 허용하는 경우 file : /// 접두사를 사용해야합니다. 브라우저에서 C : /Users/Suzaku/Documents/Javascript/controller.js를 열어보고 다음과 같이 file : /// C : /Users/Suzaku/Documents/Javascript/controller.js (경고를 생성해야 함) – x4rf41

답변

0

. 업데이트 된 자바 스크립트 파일 (controller.js)로 직접 이동 한 다음 F5 키를 눌러 캐시 된 버전이 아닌 새 버전을로드하고 있음을 확인하십시오. 그렇지 않으면 브라우저가 이전의 캐시 된 스크립트 (1111이 정의되어 있음)를 스크립트에 계속 연결합니다. 일반적인 문제!

관련 문제