53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
define("dijit/hccss", [
|
|
"require", // require.toUrl
|
|
"dojo/_base/config", // config.blankGif
|
|
"dojo/dom-class", // domClass.add domConstruct.create domStyle.getComputedStyle
|
|
"dojo/dom-construct", // domClass.add domConstruct.create domStyle.getComputedStyle
|
|
"dojo/dom-style", // domClass.add domConstruct.create domStyle.getComputedStyle
|
|
"dojo/ready", // ready
|
|
"dojo/_base/sniff", // has("ie") has("mozilla")
|
|
"dojo/_base/window" // win.body
|
|
], function(require, config, domClass, domConstruct, domStyle, ready, has, win){
|
|
|
|
// module:
|
|
// dijit/hccss
|
|
// summary:
|
|
// Test if computer is in high contrast mode, and sets dijit_a11y flag on <body> if it is.
|
|
|
|
if(has("ie") || has("mozilla")){ // NOTE: checking in Safari messes things up
|
|
// priority is 90 to run ahead of parser priority of 100
|
|
ready(90, function(){
|
|
// summary:
|
|
// Detects if we are in high-contrast mode or not
|
|
|
|
// create div for testing if high contrast mode is on or images are turned off
|
|
var div = domConstruct.create("div",{
|
|
id: "a11yTestNode",
|
|
style:{
|
|
cssText:'border: 1px solid;'
|
|
+ 'border-color:red green;'
|
|
+ 'position: absolute;'
|
|
+ 'height: 5px;'
|
|
+ 'top: -999px;'
|
|
+ 'background-image: url("' + (config.blankGif || require.toUrl("dojo/resources/blank.gif")) + '");'
|
|
}
|
|
}, win.body());
|
|
|
|
// test it
|
|
var cs = domStyle.getComputedStyle(div);
|
|
if(cs){
|
|
var bkImg = cs.backgroundImage;
|
|
var needsA11y = (cs.borderTopColor == cs.borderRightColor) || (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)" ));
|
|
if(needsA11y){
|
|
domClass.add(win.body(), "dijit_a11y");
|
|
}
|
|
if(has("ie")){
|
|
div.outerHTML = ""; // prevent mixed-content warning, see http://support.microsoft.com/kb/925014
|
|
}else{
|
|
win.body().removeChild(div);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|