저는 자바 스크립트 (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을 새로 고치지 않고이 변수를 변경할 수 있어야합니다. 사전에
감사 브라우저는 자바 스크립트 파일 캐시를 검색하는 것처럼 소리
가이
html을 다시로드하지 않고 내용을 새로 고치는 일반적인 방법은 ajax를 사용하는 것입니다. "controller.js?"+ new Date(). getTime()과 같은 javascript 파일에 임의의 GET 매개 변수를 추가 할 수 있습니다. ; 이것은 캐싱을 방지합니다. – x4rf41
동적 스크립트가로드되어 비동기 적으로 실행되기 때문에 이것은 작동하지 않습니다. 또한 로컬 호스트 서버를 설정하여 해당 파일에 대한 액세스 제한을 실행하지 않아야합니다. –
브라우저는 일반적으로 로컬 파일 액세스를 제한하며, 허용하는 경우 file : /// 접두사를 사용해야합니다. 브라우저에서 C : /Users/Suzaku/Documents/Javascript/controller.js를 열어보고 다음과 같이 file : /// C : /Users/Suzaku/Documents/Javascript/controller.js (경고를 생성해야 함) – x4rf41