스타일 요소 동적 추가
3831 단어 JavaScriptcssIE
/**
* @description IE6~9 , :
* 1)link+style 31 ;
* 2) css rule , 4095 ;
* 3)<pre>@import</pre> 4 。
*
* link/style , 1 。
* @author shawnwu
* @date 2013-09-03
*/
(function(win){
var doc = document,
head = document.getElementsByTagName("head")[0],
linkEls = doc.getElementsByTagName("link"),
styleEls = doc.getElementsByTagName("style"),
poorIE = /MSIE ([^;]+)/.test(navigator.userAgent) && parseInt(RegExp.$1,10) < 10,
IMPORT_ID = "importLink_ID",
APPEND_ID = "appendStyle_ID",
/**
* IE6~9 BUG:link+style , 31 。
*/
LIMIT = 31,
// style : import, append
maxNum = LIMIT - 2,
isLimited = false;
/**
* @description LINK
* @param {String} url
* @return link
*/
function createLinkEl(url){
var link = doc.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
head.appendChild(link);
return link;
}
/**
* @description style
* @param {String} str
* @param {String} id ID
* @return style
*/
function createStyleEl(str,id){
var el = doc.createElement("style");
el.type = "text/css";
if(id){
el.id = id;
}
if(str){
if(poorIE){
el.styleSheet.cssText = str; //IE
}else{
el.appendChild(document.createTextNode(str));
}
}
head.appendChild(el);
return el;
}
function checkLimit(){
if(!isLimited && poorIE){
if(linkEls.length + styleEls.length >= maxNum){
isLimited = true;
}
}
return isLimited;
}
function loadStyle(url){
if(checkLimit()){
doImportStyle(url);
}else{
doLoadStyle(url);
}
}
function loadStyleStr(str){
if(checkLimit()){
doAppendStr(str);
}else{
doLoadStr(str);
}
}
function doLoadStr(str){
createStyleEl(str);
}
function doAppendStr(str){
var el = doc.getElementById(APPEND_ID);
if(!el){
createStyleEl(str,APPEND_ID);
}else{
el.styleSheet.cssText = el.styleSheet.cssText + str;
}
}
function doImportStyle(url){
var el = doc.getElementById(IMPORT_ID),
styleEl = null;
if(!el){
styleEl = createStyleEl(null,IMPORT_ID);
styleEl.styleSheet.addImport(url);
}else{
el.styleSheet.addImport(url);
}
}
function doLoadStyle(url){
createLinkEl(url)
}
//export
win.cssUtil = {
// css
loadStyle: loadStyle,
//
loadStyleStr: loadStyleStr
};
})(window);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.