ฉันพัฒนาโมดูลเมื่อเร็ว ๆ นี้ที่ต้องการไฟล์ JS และ CSS บางไฟล์เพื่อแทรกเข้าไปใน<head>
แต่ละหน้า ตอนแรกฉันใช้:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
อย่างไรก็ตามฉันสังเกตเห็นว่าเมื่อเปิดใช้งานการแคชเว็บไซต์โหลดทั้งรุ่นแคชจาก/cache
และรุ่นที่ไม่ใช่แคช/modules/mod_x/js/
ทำให้เกิดข้อผิดพลาด JS
เมื่อฉันเปลี่ยนสิ่งนี้เป็น:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
สคริปต์ถูกโหลดเพียงครั้งเดียวจากแคชเพื่อแก้ไขข้อผิดพลาดเหล่านี้
ฉันอ่านในเอกสารว่าaddScript
วิธีการดังกล่าวเป็น 'ระดับต่ำ' มากกว่าJHtml:script
วิธีการ แต่นอกเหนือจากที่บอกว่า ...
แน่นอนคุณจะต้องใช้รหัสบางขั้นตอน [ที่ JHtml: สคริปต์ทำเพื่อคุณ] ด้วยตนเองซึ่งจะทำโดยอัตโนมัติโดยใช้ [JHtml: วิธีสคริปต์] ด้านบน [ถ้าคุณใช้ addScript]
... ไม่มีรายละเอียดเพิ่มเติม
ดังนั้นความแตกต่างคืออะไร? JHtml:script
ในที่สุดฉันคิดว่าจะเรียกaddScript
วัตถุเอกสารในบางจุด แต่ขั้นตอนตัวกลางอื่น ๆ ดำเนินการก่อนหรือไม่