webui-aria2/js/libs/dojo/selector/_loader.js.uncompressed.js
2012-05-01 19:52:07 +08:00

47 lines
1.6 KiB
JavaScript

//>>built
define("dojo/selector/_loader", ["../has", "require"],
function(has, require){
// summary:
// This module handles loading the appropriate selector engine for the given browser
"use strict";
var testDiv = document.createElement("div");
has.add("dom-qsa2.1", !!testDiv.querySelectorAll);
has.add("dom-qsa3", function(){
// test to see if we have a reasonable native selector engine available
try{
testDiv.innerHTML = "<p class='TEST'></p>"; // test kind of from sizzle
// Safari can't handle uppercase or unicode characters when
// in quirks mode, IE8 can't handle pseudos like :empty
return testDiv.querySelectorAll(".TEST:empty").length == 1;
}catch(e){}
});
var fullEngine;
var acme = "./acme", lite = "./lite";
return {
load: function(id, parentRequire, loaded, config){
var req = require;
// here we implement the default logic for choosing a selector engine
id = id == "default" ? has("config-selectorEngine") || "css3" : id;
id = id == "css2" || id == "lite" ? lite :
id == "css2.1" ? has("dom-qsa2.1") ? lite : acme :
id == "css3" ? has("dom-qsa3") ? lite : acme :
id == "acme" ? acme : (req = parentRequire) && id;
if(id.charAt(id.length-1) == '?'){
id = id.substring(0,id.length - 1);
var optionalLoad = true;
}
// the query engine is optional, only load it if a native one is not available or existing one has not been loaded
if(optionalLoad && (has("dom-compliant-qsa") || fullEngine)){
return loaded(fullEngine);
}
// load the referenced selector engine
req([id], function(engine){
if(id != "./lite"){
fullEngine = engine;
}
loaded(engine);
});
}
};
});