function loadjscssfile(filename, filetype){ //파일 형식이 .js인 경우 스크립트 태그를 생성하고 해당 속성을 설정합니다. if (filetype=="js"){ var fileref =document.createElement('script'); fileref.setAttribute("type","text/javascript") fileref.setAttribute("src", filename); /if file 유형이 .css인 경우 스크립트 태그를 생성하고 해당 속성을 설정합니다. else if (filetype=="css"){ var fileref=document.createElement("link") fileref.setAttribute( "rel", "stylesheet"); fileref.setAttribute("type", "text/css") fileref.setAttribute("href", 파일 이름); if ( typeof fileref!="undefine") document.getElementsByTagName("head")[0].appendChild(fileref); } //동적으로 .js 파일 추가 loadjscssfile("myscript .js", "js"); //.js 파일을 추가하는 것과 마찬가지로 .php 파일을 동적으로 추가합니다. loadjscssfile("javascript.php", "js") //동적 .css 파일 loadjscssfile("mystyle.css", "css")
동일한 js/css 파일이 여러 개 로드되는 것을 방지하기 위해 번, 다음 판단을 추가하십시오 (이것은 단지 대략적인 감지입니다)
function checkloadjscssfile(filename, filetype){ if (filesadd.indexOf("[" filename "]") ==-1){ loadjscssfile( filename, filetype);//[filename]을 files added에 저장 files added ="[" filename "]" } else{ alert("파일이 이미 추가되었습니다!" ); }
//처음 로드 checkloadjscssfile("myscript.js", "js") // 동일한 파일을 반복적으로 로드했는데 실패했습니다 checkloadjscssfile("myscript.js", "js");
JavaScript/Csss 파일의 동적 삭제 참고: ie6/7에서 스타일을 동적으로 삭제할 때 발생하는 버그 해결 방법: 1. 스타일 시트에 가져오기 스타일 시트가 없습니다. 2. 링크의 유형 속성을 null 값으로 설정한 다음 href 위치를 수정합니다. href를 null로 설정하고 마지막으로 유형 값을 "text/css"로 설정하면 IE가 새 스타일 시트를 해석하게 됩니다.
해당 DOM 요소 가져오기 파일 이름 및 파일 유형에 따라 요소 찾기 DOM RemoveChild를 사용하여 "스크립트" 또는 "링크" 요소 삭제
코드 복사
코드는 다음과 같습니다.function Removejscssfile(filename, filetype){ //파일 형식을 판단합니다.
var targetelement=(filetype == "js")? "script" : (filetype=="css")? "link" : "none"
//파일 이름 판단 var targetattr =(filetype=="js") ? "src" : (filetype=="css")? "href" : "없음" var allsuspects=document.getElementsByTagName(targetelement) 요소 및 일치하는 요소 삭제 for (var i=allsuspects.length; i>=0; i--){ if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute( targetattr).indexOf(filename)!=-1) allsuspects[i].parentNode.removeChild(allsuspects[i]) } }