UNPKG

ps-tcplayer

Version:

Tencent Cloud Player component with Vue2/Vue3 compatibility

117 lines (112 loc) 3.37 kB
export function loadResource (sources, cb) { let arr = [...sources] if (!arr.length) { cb && cb() console.log('resouce loaded') return false } let item = arr.shift() if (!item) { loadResource(arr, cb) return false } // 使用正则表达式或URL解析来检测文件类型,兼容带查询参数的URL const isJsFile = /\.js(\?.*)?$/.test(item); const isCssFile = /\.css(\?.*)?$/.test(item); if (isJsFile) { getJS(item, () => { loadResource(arr, cb) }) } else if (isCssFile) { getCss(item, () => { loadResource(arr, cb) }) } else { console.warn('no suport resource:',item) loadResource(arr, cb) } } function getJS ( url, callback ) { if(document.querySelector(`script[src="${url}"]`)) { console.log(url,':has youle') callback && callback(); return false } var script = document.createElement('script'), fn = callback || function(){}; script.type = 'text/javascript' //IE if(script.readyState){ script.onreadystatechange = function(){ if( script.readyState == 'loaded' || script.readyState == 'complete' ){ script.onreadystatechange = null; fn(); }else{ script.onreadystatechange = null; fn(); } console.log(script.readyState) }; }else{ //其他浏览器 script.onload = function(){ fn(); }; script.onerror = function(err){ fn(); console.log(err) }; } script.src = url; document.querySelector('body').appendChild(script) } function getCss( url, callback ){ if(document.querySelector(`link[href="${url}"]`)){ console.log(url,':has youle') callback && callback(); return false } var css = document.createElement('link'), fn = callback || function(){}; css.rel = 'stylesheet'; //IE if(css.readyState){ css.onreadystatechange = function(){ if( css.readyState == 'loaded' || css.readyState == 'complete' ){ css.onreadystatechange = null; fn(); }else{ css.onreadystatechange = null; fn(); } console.log(css.readyState) }; }else{ //其他浏览器 css.onload = function(){ fn(); }; css.onerror = function(err){ fn(); console.log(err) }; } css.href = url; document.querySelector('head').appendChild(css) } export function parseDom (html) { let ele = document.createElement('div') ele.innerHTML = html.trim() return ele.childNodes[0] } export function afterinsert(newElement,targetElement){ const parent = targetElement.parentNode;  //得到父节点 if (parent.lastChild === targetElement) { parent.appendChild(newElement);  }else{   parent.insertBefore(newElement,targetElement.nextSibling);  //否则,当前节点的下一个节点之前添加 } } export function isElement(node) { return true }