ตกลงพวกนี้เป็นแบบทดสอบเล็กน้อยของฉันด้วย ฉันมีปัญหาคล้ายกันดังนั้นฉันจึงตัดสินใจทดสอบ 3 สถานการณ์:
- ไฟล์ HTML หนึ่งไฟล์ JS ภายนอกหนึ่งไฟล์ ... ใช้งานได้หรือไม่ - ฟังก์ชันสามารถสื่อสารผ่าน global var ได้หรือไม่
- ไฟล์ HTML สองไฟล์ไฟล์ JS ภายนอกหนึ่งไฟล์เบราว์เซอร์หนึ่งแท็บสองแท็บไฟล์เหล่านี้จะรบกวนผ่าน global var หรือไม่
- ไฟล์ HTML หนึ่งไฟล์เปิดโดย 2 เบราว์เซอร์จะใช้งานได้หรือไม่และจะรบกวนหรือไม่
ผลลัพธ์ทั้งหมดเป็นไปตามที่คาดไว้
- มันได้ผล. ฟังก์ชั่น f1 () และ f2 () สื่อสารผ่าน global var (var อยู่ในไฟล์ JS ภายนอกไม่ใช่ในไฟล์ HTML)
- พวกเขาไม่ยุ่งเกี่ยว เห็นได้ชัดว่ามีการสร้างสำเนาไฟล์ JS ที่แตกต่างกันสำหรับแต่ละแท็บเบราว์เซอร์แต่ละหน้า HTML
- ทั้งหมดทำงานอย่างอิสระตามที่คาดไว้
แทนที่จะเรียกดูบทช่วยสอนฉันพบว่ามันง่ายกว่าที่จะลองใช้ฉันจึงทำ ข้อสรุปของฉัน: เมื่อใดก็ตามที่คุณรวมไฟล์ JS ภายนอกไว้ในหน้า HTML ของคุณเนื้อหาของ JS ภายนอกจะ "คัดลอก / วาง" ลงในหน้า HTML ของคุณก่อนที่หน้าจะแสดงผล หรือในหน้า PHP ของคุณถ้าคุณต้องการ โปรดแก้ไขฉันถ้าฉันผิดที่นี่Thanx
ไฟล์ตัวอย่างของฉันมีดังต่อไปนี้:
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>
บล็อกแท็กที่สอง ฉันเพิ่งลอง 2 วิธีที่แตกต่างกัน (โดยไม่ต้องประกาศ var ก่อนไฟล์ helpers.js) และทั้งคู่ก็ได้ผล ฉันจะโพสต์คำตอบ แต่ดูเหมือนว่าจะต้องมีข้อมูลสำคัญบางอย่างที่ขาดหายไปในคำถามของคุณ