123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- define(function() {
- if (typeof window == 'undefined')
- return { load: function(n, r, load){ load() } };
- var head = document.getElementsByTagName('head')[0];
- var engine = window.navigator.userAgent.match(/Trident\/([^ ;]*)|AppleWebKit\/([^ ;]*)|Opera\/([^ ;]*)|rv\:([^ ;]*)(.*?)Gecko\/([^ ;]*)|MSIE\s([^ ;]*)|AndroidWebKit\/([^ ;]*)/) || 0;
-
- var useImportLoad = false;
-
-
- var useOnload = true;
-
- if (engine[1] || engine[7])
- useImportLoad = parseInt(engine[1]) < 6 || parseInt(engine[7]) <= 9;
-
- else if (engine[2] || engine[8] || 'WebkitAppearance' in document.documentElement.style)
- useOnload = false;
-
- else if (engine[4])
- useImportLoad = parseInt(engine[4]) < 18;
-
- var cssAPI = {};
- cssAPI.pluginBuilder = './css-builder';
-
- var curStyle, curSheet;
- var createStyle = function () {
- curStyle = document.createElement('style');
- head.appendChild(curStyle);
- curSheet = curStyle.styleSheet || curStyle.sheet;
- }
- var ieCnt = 0;
- var ieLoads = [];
- var ieCurCallback;
-
- var createIeLoad = function(url) {
- curSheet.addImport(url);
- curStyle.onload = function(){ processIeLoad() };
-
- ieCnt++;
- if (ieCnt == 31) {
- createStyle();
- ieCnt = 0;
- }
- }
- var processIeLoad = function() {
- ieCurCallback();
-
- var nextLoad = ieLoads.shift();
-
- if (!nextLoad) {
- ieCurCallback = null;
- return;
- }
-
- ieCurCallback = nextLoad[1];
- createIeLoad(nextLoad[0]);
- }
- var importLoad = function(url, callback) {
- if (!curSheet || !curSheet.addImport)
- createStyle();
- if (curSheet && curSheet.addImport) {
-
- if (ieCurCallback) {
- ieLoads.push([url, callback]);
- }
- else {
- createIeLoad(url);
- ieCurCallback = callback;
- }
- }
- else {
-
- curStyle.textContent = '@import "' + url + '";';
- var loadInterval = setInterval(function() {
- try {
- curStyle.sheet.cssRules;
- clearInterval(loadInterval);
- callback();
- } catch(e) {}
- }, 10);
- }
- }
-
- var linkLoad = function(url, callback) {
- var link = document.createElement('link');
- link.type = 'text/css';
- link.rel = 'stylesheet';
- if (useOnload)
- link.onload = function() {
- link.onload = function() {};
-
- setTimeout(callback, 7);
- }
- else
- var loadInterval = setInterval(function() {
- for (var i = 0; i < document.styleSheets.length; i++) {
- var sheet = document.styleSheets[i];
- if (sheet.href == link.href) {
- clearInterval(loadInterval);
- return callback();
- }
- }
- }, 10);
- link.href = url;
- head.appendChild(link);
- }
- cssAPI.normalize = function(name, normalize) {
- if (name.substr(name.length - 4, 4) == '.css')
- name = name.substr(0, name.length - 4);
- return normalize(name);
- }
- cssAPI.load = function(cssId, req, load, config) {
- (useImportLoad ? importLoad : linkLoad)(req.toUrl(cssId + '.css'), load);
- }
- return cssAPI;
- });
|