Có thể gọi .js
đồng bộ trong một tệp và sau đó sử dụng nó ngay sau đó không?
<script type="text/javascript">
var head = document.getElementsByTagName('head').item(0);
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'http://mysite/my.js');
head.appendChild(script);
myFunction(); // Fails because it hasn't loaded from my.js yet.
window.onload = function() {
// Works most of the time but not all of the time.
// Especially if my.js injects another script that contains myFunction().
myFunction();
};
</script>
Điều này được đơn giản hóa. Trong phần triển khai của tôi, công cụ createElement nằm trong một hàm. Tôi đã nghĩ đến việc thêm thứ gì đó vào hàm có thể kiểm tra xem liệu một biến nhất định có được khởi tạo trước khi trả lại quyền điều khiển hay không. Nhưng sau đó vẫn còn vấn đề là phải làm gì khi bao gồm các j từ một trang web khác mà tôi không kiểm soát được.
Suy nghĩ?
Biên tập:
Tôi đã chấp nhận câu trả lời tốt nhất hiện tại vì nó đưa ra lời giải thích tốt cho những gì đang xảy ra. Nhưng nếu bất kỳ ai có bất kỳ đề xuất nào về cách cải thiện điều này, tôi rất sẵn lòng cho họ. Đây là một ví dụ về những gì tôi muốn làm.
// Include() is a custom function to import js.
Include('my1.js');
Include('my2.js');
myFunc1('blarg');
myFunc2('bleet');
Tôi chỉ muốn không phải biết quá nhiều về nội bộ và chỉ có thể nói, "Tôi muốn sử dụng mô-đun này, và bây giờ tôi sẽ sử dụng một số mã từ nó."
eval()
mọi tệp theo thứ tự đã cho, nếu không thì chỉ cần lưu trữ phản hồi).