자, 여기, 내 작은 시험도 있습니다. 비슷한 문제가 발생하여 3 가지 상황을 테스트하기로 결정했습니다.
- 하나의 HTML 파일, 하나의 외부 JS 파일 ... 전혀 작동하지 않습니다-함수가 전역 변수를 통해 통신 할 수 있습니까?
- 두 개의 HTML 파일, 하나의 외부 JS 파일, 하나의 브라우저, 두 개의 탭 : 전역 변수를 통해 방해합니까?
- 두 개의 브라우저로 열린 하나의 HTML 파일이 작동하며 방해합니까?
모든 결과는 예상대로였습니다.
- 효과가있다. f1 () 및 f2 () 함수는 전역 var를 통해 통신합니다 (var은 HTML 파일이 아닌 외부 JS 파일에 있음).
- 그들은 방해하지 않습니다. 각 브라우저 탭, 각 HTML 페이지에 대해 분명하게 구별 된 JS 파일 사본이 작성되었습니다.
- 모든 것은 예상대로 독립적으로 작동합니다.
튜토리얼을 탐색하는 대신 시험해 보는 것이 더 쉽다는 것을 알았습니다. 결론 : HTML 페이지에 외부 JS 파일을 포함 할 때마다 페이지가 렌더링되기 전에 외부 JS의 내용이 HTML 페이지에 "복사 / 붙여 넣기"됩니다. 또는 PHP 페이지로 이동하십시오. 내가 틀렸다면 정정 해주세요. 고맙습니다.
내 예제 파일은 다음과 같습니다.
외부 JS :
var global = 0;
function f1()
{
alert('fired: f1');
global = 1;
alert('global changed to 1');
}
function f2()
{
alert('fired f2');
alert('value of global: '+global);
}
HTML 1 :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
HTML 2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index2.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>
<script>
. 방금 helpers.js 파일 앞에 var를 선언하지 않고 2 가지 접근 방식을 시도했지만 모두 작동했습니다. 답변을 드리겠습니다. 질문에 누락 된 중요한 정보가있을 것 같습니다.