はい、皆さん、これも私の小さなテストです。同様の問題があったため、3つの状況をテストすることにしました。
- 1つのHTMLファイル、1つの外部JSファイル...それはまったく機能しますか?関数はグローバル変数を介して通信できますか?
- 2つのHTMLファイル、1つの外部JSファイル、1つのブラウザー、2つのタブ:グローバル変数を介して干渉しますか?
- 2つのブラウザで開いた1つのHTMLファイルは機能しますか?
すべての結果は予想通りでした。
- できます。関数f1()およびf2()は、グローバルvarを介して通信します(varは、HTMLファイルではなく、外部JSファイルにあります)。
- それらは干渉しません。JSファイルの明確に異なるコピーが、各ブラウザタブ、各HTMLページに対して作成されています。
- 予想どおり、すべてが独立して動作します。
チュートリアルを閲覧する代わりに、試してみるほうが簡単だと思ったので、実際に試してみました。私の結論: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つの異なる方法を試したところ、どちらも機能しました。回答を投稿しますが、質問には重要な情報が欠けているようです。