-
Notifications
You must be signed in to change notification settings - Fork 1
/
hccss.js
55 lines (49 loc) · 1.75 KB
/
hccss.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
define([
"require", // require, require.toUrl
"./_base/config", // config.blankGif
"./dom-class", // domClass.add
"./dom-style", // domStyle.getComputedStyle
"./has",
"./domReady",
"./_base/window" // win.body
], function(require, config, domClass, domStyle, has, domReady, win){
// module:
// dojo/hccss
/*=====
return function(){
// summary:
// Test if computer is in high contrast mode (i.e. if browser is not displaying background images).
// Defines `has("highcontrast")` and sets `dj_a11y` CSS class on `<body>` if machine is in high contrast mode.
// Returns `has()` method;
};
=====*/
// Has() test for when background images aren't displayed. Don't call has("highcontrast") before dojo/domReady!.
has.add("highcontrast", function(){
// note: if multiple documents, doesn't matter which one we use
var div = win.doc.createElement("div");
try{
div.style.cssText = "border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;" +
"background-image: url(\"" + (config.blankGif || require.toUrl("./resources/blank.gif")) + "\");";
win.body().appendChild(div);
var cs = domStyle.getComputedStyle(div),
bkImg = cs.backgroundImage;
return cs.borderTopColor == cs.borderRightColor ||
(bkImg && (bkImg == "none" || bkImg == "url(invalid-url:)" ));
}catch(e){
console.warn("hccss: exception detecting high-contrast mode, document is likely hidden: " + e.toString());
return false;
}finally{
if(has("ie") <= 8){
div.outerHTML = ""; // prevent mixed-content warning, see http://support.microsoft.com/kb/925014
}else{
win.body().removeChild(div);
}
}
});
domReady(function(){
if(has("highcontrast")){
domClass.add(win.body(), "dj_a11y");
}
});
return has;
});