Loading...
clearTimeout(timeoutID); // 处理加载成功的逻辑 }); } if ( node.tagName === 'LINK' && node.getAttribute('rel') === 'stylesheet' ) { // 处理动态添加的 link 标签 // 设置加载失败和超时事件监听器 node.addEventListener('error', () => { // 处理加载失败的逻辑 const upLogparams = { srcDesc: 'css资源加载失败上报', src: node.src, baseURI: node.baseURI, code: node, }; window._logger_.upload({ eventName: 'common_init_client_css_fail_pp2', // 理论上可以任意字符串,但是需要规划 params: JSON.stringify(upLogparams), // JSON.stringify({}) 任意参数 typeName: 'TYLogUploadEventTypeIndex', }); }); const timeoutID = setTimeout(() => { // 处理加载超时的逻辑 const upLogparams = { srcDesc: 'css资源加载失败上报', src: node.src, baseURI: node.baseURI, code: node, }; window._logger_.upload({ eventName: 'common_init_client_css_fail_pending_pp2', // 理论上可以任意字符串,但是需要规划 params: JSON.stringify(upLogparams), // JSON.stringify({}) 任意参数 typeName: 'TYLogUploadEventTypeIndex', }); clearTimeout(timeoutID); }, 1000 * 10); // 设置超时时间为 5 秒 // 在 MutationObserver 中监听这个自定义事件 document.addEventListener('resourceLoaded', function (event) { const node = event.detail.node; // 取消超时逻辑 clearTimeout(timeoutID); // 处理加载成功的逻辑 }); } }); }); }); observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'href'], attributeOldValue: true, });