Đây là tình hình của tôi: Tôi tự động thêm 2 kịch bản thông quaLàm thế nào để sử dụng jQuery để xử lý thẻ script tự động được thêm vào trong song song
$('body').append('<script src="http://localhost:8080/script_1.js"></script>');
$('body').append('<script src="http://localhost:8080/script_2.js"></script>');
Sau đó, tôi tìm thấy họ sẽ được nạp theo thứ tự thay vì song song từ chrome console.
Tuy nhiên, họ có thể được nạp song song nếu tôi sử dụng một trong hai js mẹ đẻ
document.body.appendChild(script);
hoặc chức năng jQuery: getScript
$.getScript('http://localhost:8080/script_1.js');
tôi đã tìm kiếm rất nhiều và thấy rằng jQuery thực sự sẽ loại bỏ các script , phân tích cú pháp nguồn và sử dụng hàm ajax $ .ajax() để tải tập lệnh thay vì cho phép trình duyệt xử lý. Nhưng hàm $ .getScript() cũng sử dụng $ .ajax() và không bị chặn. Rõ ràng, nó không phải là lỗi của $ .ajax().
Đây là một trường hợp thử nghiệm: Tới http://jquery.com và dán sau kịch bản trong giao diện điều khiển mà sẽ thêm một file js hai lần thông qua jQuery
$('body').append('<script src="/jquery-wp-content/themes/jquery/js/plugins.js"></script>');
$('body').append('<script src="/jquery-wp-content/themes/jquery/js/plugins.js"></script>');
Kiểm tra thời gian, bạn sẽ thấy chúng được nạp theo thứ tự . Tất nhiên, tôi có thể sử dụng native js hoặc $ .getScript() ở trên để tiết kiệm thời gian của tôi.
Tuy nhiên, tôi muốn biết tại sao? Tại sao các cuộc gọi jQuery ajax này không thêm song song?
Cập nhật
Thú vị hơn, dường như chuỗi chỉ áp dụng cho các kịch bản từ cùng nguồn gốc. Tôi đã cố tải một số tệp js dạng thư viện được lưu trữ trên google và chúng nằm song song. Cố gắng sau cũng trong http://jquery.com
$('body').append('<script src="https://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js"></script>');
$('body').append('<script src="https://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js"></script>');
"Tập lệnh được tạo động và thêm vào tài liệu là không đồng bộ theo mặc định" theo [bài viết này] (http://www.html5rocks.com/en/tutorials/speed/script-loading/) nhưng không không giải thích tại sao đây không phải là trường hợp cho các kịch bản lệnh cục bộ của jQuery được thêm vào. – Moob
@Moob yeah, tôi biết ... như tôi đã đề cập, tôi có thể sử dụng javascript thuần 'document.body.appendChild (script);' để tải và có, chúng song song ... nhưng tôi chỉ muốn tìm hiểu xem được thực hiện một cách bí mật để làm cho trường hợp của tôi trở thành tuần tự –
Có một số đầu mối trong https://html.spec.whatwg.org/multipage/scripting.html#script cụ thể nhưng - theo cách của họ: "Chi tiết xử lý chính xác cho các thuộc tính này vì hầu hết các lý do lịch sử, phần nào không tầm thường, liên quan đến một số khía cạnh của HTML. Do đó, các yêu cầu thực hiện do nhu cầu cần thiết nằm rải rác trong đặc tả ... " – Moob