代码初始化
This commit is contained in:
169
public/assets/libs/require-css/css.js
Normal file
169
public/assets/libs/require-css/css.js
Normal file
@@ -0,0 +1,169 @@
|
||||
/*
|
||||
* Require-CSS RequireJS css! loader plugin
|
||||
* 0.1.10
|
||||
* Guy Bedford 2014
|
||||
* MIT
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* Usage:
|
||||
* require(['css!./mycssFile']);
|
||||
*
|
||||
* Tested and working in (up to latest versions as of March 2013):
|
||||
* Android
|
||||
* iOS 6
|
||||
* IE 6 - 10
|
||||
* Chrome 3 - 26
|
||||
* Firefox 3.5 - 19
|
||||
* Opera 10 - 12
|
||||
*
|
||||
* browserling.com used for virtual testing environment
|
||||
*
|
||||
* Credit to B Cavalier & J Hann for the IE 6 - 9 method,
|
||||
* refined with help from Martin Cermak
|
||||
*
|
||||
* Sources that helped along the way:
|
||||
* - https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent
|
||||
* - http://www.phpied.com/when-is-a-stylesheet-really-loaded/
|
||||
* - https://github.com/cujojs/curl/blob/master/src/curl/plugin/css.js
|
||||
*
|
||||
*/
|
||||
|
||||
define(function() {
|
||||
//>>excludeStart('excludeRequireCss', pragmas.excludeRequireCss)
|
||||
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;
|
||||
|
||||
// use <style> @import load method (IE < 9, Firefox < 18)
|
||||
var useImportLoad = false;
|
||||
|
||||
// set to false for explicit <link> load checking when onload doesn't work perfectly (webkit)
|
||||
var useOnload = true;
|
||||
|
||||
// trident / msie
|
||||
if (engine[1] || engine[7])
|
||||
useImportLoad = parseInt(engine[1]) < 6 || parseInt(engine[7]) <= 9;
|
||||
// webkit
|
||||
else if (engine[2] || engine[8] || 'WebkitAppearance' in document.documentElement.style)
|
||||
useOnload = false;
|
||||
// gecko
|
||||
else if (engine[4])
|
||||
useImportLoad = parseInt(engine[4]) < 18;
|
||||
|
||||
//>>excludeEnd('excludeRequireCss')
|
||||
//main api object
|
||||
var cssAPI = {};
|
||||
|
||||
//>>excludeStart('excludeRequireCss', pragmas.excludeRequireCss)
|
||||
cssAPI.pluginBuilder = './css-builder';
|
||||
|
||||
// <style> @import load method
|
||||
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) {
|
||||
// old IE
|
||||
if (ieCurCallback) {
|
||||
ieLoads.push([url, callback]);
|
||||
}
|
||||
else {
|
||||
createIeLoad(url);
|
||||
ieCurCallback = callback;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// old Firefox
|
||||
curStyle.textContent = '@import "' + url + '";';
|
||||
|
||||
var loadInterval = setInterval(function() {
|
||||
try {
|
||||
curStyle.sheet.cssRules;
|
||||
clearInterval(loadInterval);
|
||||
callback();
|
||||
} catch(e) {}
|
||||
}, 10);
|
||||
}
|
||||
}
|
||||
|
||||
// <link> load method
|
||||
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() {};
|
||||
// for style dimensions queries, a short delay can still be necessary
|
||||
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);
|
||||
}
|
||||
|
||||
//>>excludeEnd('excludeRequireCss')
|
||||
cssAPI.normalize = function(name, normalize) {
|
||||
if (name.substr(name.length - 4, 4) == '.css')
|
||||
name = name.substr(0, name.length - 4);
|
||||
|
||||
return normalize(name);
|
||||
}
|
||||
|
||||
//>>excludeStart('excludeRequireCss', pragmas.excludeRequireCss)
|
||||
cssAPI.load = function(cssId, req, load, config) {
|
||||
|
||||
(useImportLoad ? importLoad : linkLoad)(req.toUrl(cssId + '.css'), load);
|
||||
|
||||
}
|
||||
|
||||
//>>excludeEnd('excludeRequireCss')
|
||||
return cssAPI;
|
||||
});
|
||||
Reference in New Issue
Block a user