press-plus
Version:
46 lines (40 loc) • 1.25 kB
JavaScript
/**
* 动态加载 ChatSDK 脚本
* @param {string} src 脚本地址
* @returns {Promise}
*/
export function loadChatSDK(src) {
return new Promise((resolve, reject) => {
// 检查是否已加载
if (window.ChatSDK) {
resolve(window.ChatSDK);
return;
}
// 检查是否已有相同脚本正在加载
const existingScript = document.querySelector(`script[src="${src}"]`);
if (existingScript) {
existingScript.addEventListener('load', () => {
if (window.ChatSDK) {
resolve(window.ChatSDK);
} else {
reject(new Error('ChatSDK 加载失败:未找到 ChatSDK 对象'));
}
});
existingScript.addEventListener('error', () => reject(new Error('ChatSDK 脚本加载失败')));
return;
}
// 创建并加载脚本
const script = document.createElement('script');
script.src = src;
script.async = true;
script.onload = () => {
if (window.ChatSDK) {
resolve(window.ChatSDK);
} else {
reject(new Error('ChatSDK 加载失败:未找到 ChatSDK 对象'));
}
};
script.onerror = () => reject(new Error('ChatSDK 脚本加载失败'));
document.head.appendChild(script);
});
}