diff --git a/tests/progressbar.js b/tests/progressbar.js index f3e5c625e64..a490c035596 100644 --- a/tests/progressbar.js +++ b/tests/progressbar.js @@ -56,16 +56,16 @@ test("accessibility", function() { expect(7); el = $("#progressbar").progressbar(); - equals(el.ariaRole(), "progressbar", "aria role"); - equals(el.ariaState("valuemin"), 0, "aria-valuemin"); - equals(el.ariaState("valuemax"), 100, "aria-valuemax"); - equals(el.ariaState("valuenow"), 0, "aria-valuenow initially"); + equals(el.attr("role"), "progressbar", "aria role"); + equals(el.attr("aria-valuemin"), 0, "aria-valuemin"); + equals(el.attr("aria-valuemax"), 100, "aria-valuemax"); + equals(el.attr("aria-valuenow"), 0, "aria-valuenow initially"); el.progressbar("progress", 77); - equals(el.ariaState("valuenow"), 77, "aria-valuenow"); + equals(el.attr("aria-valuenow"), 77, "aria-valuenow"); el.progressbar("disable"); - equals(el.ariaState("disabled"), "true", "aria-disabled"); + equals(el.attr("aria-disabled"), "true", "aria-disabled"); el.progressbar("enable"); - equals(el.ariaState("disabled"), "false", "enabled"); + equals(el.attr("aria-disabled"), "false", "enabled"); }); })(jQuery); diff --git a/ui/ui.core.js b/ui/ui.core.js index de628a94d1d..5c4f481eb83 100644 --- a/ui/ui.core.js +++ b/ui/ui.core.js @@ -108,6 +108,27 @@ $.ui = { } }; +// WAI-ARIA normalization +// tweak $.attr for FF2 implementation +if (isFF2){ + +var attr = $.attr; +$.attr = function(elem, name, value) { + var set = value !== undefined, + state = /^aria-/; + + return (name == 'role' + ? (set + ? attr.call(this, elem, name, "wairole:" + value) + : (attr.apply(this, arguments) || "").replace(/^wairole:/, "")) + : (state.test(name) + ? (set + ? elem.setAttributeNS("http://www.w3.org/2005/07/aaa", name.replace(state, "aaa:"), value) + : attr.call(this, elem, name.replace(state, "aaa:"))) + : attr.apply(this,arguments))); +}; + +} //jQuery plugins $.fn.extend({ @@ -133,32 +154,6 @@ $.fn.extend({ .attr('unselectable', 'on') .css('MozUserSelect', 'none') .bind('selectstart.ui', function() { return false; }); - }, - - // WAI-ARIA Semantics - ariaRole: function(role) { - return (role !== undefined - - // setter - ? this.attr("role", isFF2 ? "wairole:" + role : role) - - // getter - : (this.attr("role") || "").replace(/^wairole:/, "")); - }, - - ariaState: function(state, value) { - return (value !== undefined - - // setter - ? this.each(function(i, el) { - (isFF2 - ? el.setAttributeNS("http://www.w3.org/2005/07/aaa", - "aaa:" + state, value) - : $(el).attr("aria-" + state, value)); - }) - - // getter - : this.attr(isFF2 ? "aaa:" + state : "aria-" + state)); } }); diff --git a/ui/ui.dialog.js b/ui/ui.dialog.js index c940f657d6a..22ed2bb1882 100644 --- a/ui/ui.dialog.js +++ b/ui/ui.dialog.js @@ -83,8 +83,8 @@ $.widget("ui.dialog", { (options.closeOnEscape && ev.keyCode && ev.keyCode == $.keyCode.ESCAPE && self.close()); }) - .ariaRole("dialog") - .ariaState("labelledby", titleId) + .attr("role","dialog") + .attr("aria-labelledby", titleId) .mouseup(function() { self.moveToTop(); }), diff --git a/ui/ui.progressbar.js b/ui/ui.progressbar.js index e2266ea68a1..4f4fead64d6 100644 --- a/ui/ui.progressbar.js +++ b/ui/ui.progressbar.js @@ -25,10 +25,10 @@ $.widget("ui.progressbar", { this.element .addClass("ui-progressbar") .width(options.width) - .ariaRole("progressbar") - .ariaState("valuemin","0") - .ariaState("valuemax","100") - .ariaState("valuenow","0"); + .attr("role","progressbar") + .attr("aria-valuemin","0") + .attr("aria-valuemax","100") + .attr("aria-valuenow","0"); $.extend(this, { active: false, @@ -103,13 +103,13 @@ $.widget("ui.progressbar", { disable: function() { this.element.addClass("ui-progressbar-disabled"); this.disabled = true; - this.element.ariaState("disabled", true); + this.element.attr("aria-disabled", true); }, enable: function() { this.element.removeClass("ui-progressbar-disabled"); this.disabled = false; - this.element.ariaState("disabled", false); + this.element.attr("aria-disabled", false); }, pause: function() { @@ -132,7 +132,7 @@ $.widget("ui.progressbar", { if (this.options.range && !this.options.text) { this.textElement.html(percent + '%'); } - this.element.ariaState("valuenow", percent); + this.element.attr("aria-valuenow", percent); this._propagate('progress', this.ui()); },