Gần đây tôi đã phát triển một mô-đun yêu cầu một số tệp JS và CSS nhất định được chèn vào <head>
mỗi trang. Ban đầu, tôi đã sử dụng:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
Tuy nhiên, tôi nhận thấy rằng khi bộ đệm được kích hoạt, trang web đã tải cả phiên bản được lưu trong bộ nhớ cache từ /cache
và phiên bản không được lưu vào bộ nhớ cache từ đó /modules/mod_x/js/
, gây ra lỗi JS.
Khi tôi đổi nó thành:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
Tập lệnh chỉ được tải một lần, từ bộ đệm, giải quyết các lỗi này.
Tôi đã đọc trong các tài liệu rằng addScript
phương pháp này 'mức độ thấp' hơn JHtml:script
phương thức, nhưng ngoài việc nói rằng ...
Tất nhiên, bạn cũng sẽ cần mã thủ công một số bước [mà JHtml: script thực hiện cho bạn] sẽ được thực hiện tự động bằng cách sử dụng [JHtml: phương thức script] ở trên [nếu bạn sử dụng addScript].
... không có thêm chi tiết nào được đưa ra.
Vậy sự khác biệt là gì? Tôi giả sử JHtml:script
cuối cùng gọi addScript
vào một đối tượng tài liệu tại một số điểm, nhưng các bước trung gian khác được thực hiện trước?