Tôi có một tập lệnh JS tùy chỉnh mà tôi tải vào SharePoint và gặp sự cố để thực hiện phương thức init của tôi sau khi SP hoàn thành với khởi tạo riêng của nó.Thực hiện chức năng JavaScript sau khi SharePoint được khởi tạo
_spBodyOnLoadFunctionNames
Tôi đã thử các cách "chính thức" đầu tiên và thêm tên hàm của tôi vào danh sách các chức năng được thực hiện sau khi tải cơ thể với _spBodyOnLoadFunctionNames.push("myInitMethod");
nhưng điều đó không bắn vào mỗi tải trang, tôi không thể dựa trong vấn đề này.
ExecuteOrDelayUntilScriptLoaded
Sau đó, tôi đã cố gắng để sử dụng chức năng ExecuteOrDelayUntilScriptLoaded(myInitMethod, "sp.js");
nhưng nó không cháy trên mỗi tải trang một trong hai.
Cả hai cách đều hoạt động - nhưng không phải mọi lúc. Tôi giả sử rằng kịch bản của tôi được tải đôi khi trước khi SP được khởi tạo. Điều này xảy ra chủ yếu trên Chrome nhưng trên IE là tốt.
Làm cách nào để đảm bảo rằng tập lệnh của tôi được thực thi khi SP sẵn sàng?
Note: Có một hành vi thú vị khi trang web được tải và đối tượng SP là không hoàn toàn khởi tạo (các chức năng đăng ký tại ExecuteOrDelayUntilScriptLoaded chưa được gọi là): Ngay sau khi tôi bấm vào "Navigate Lên "neo trong trang (nơi bạn có thể thấy tình trạng hỗn loạn của các trang con) các tệp sau được tải và hàm init của tôi (được đăng ký trong ExecuteOrDelayUntilScriptLoaded) được gọi!
- core.debug.js
- sp.core.debug.js
- ScriptResx.ashx
- sp.ui.dialog.debug.js
- sp.runtime.debug.js
- sp.debug.js
Vì vậy, mọi thứ đều ổn sau khi nhấp vào - nhưng tại sao không tải trang như trước?