|
3738 | 3738 | // user preferences (???) |
3739 | 3739 | // some controls are aligned on the left, and others on the right |
3740 | 3740 | var useSpeedButtons, useFullScreen, |
3741 | | - i, j, k, controls, controllerSpan, tooltipId, tooltipX, tooltipY, control, |
| 3741 | + i, j, k, controls, $controllerSpan, tooltipId, tooltipX, tooltipY, control, |
3742 | 3742 | buttonImg, buttonImgSrc, buttonTitle, newButton, iconClass, buttonIcon, buttonUse, |
3743 | 3743 | leftWidth, rightWidth, totalWidth, leftWidthStyle, rightWidthStyle, |
3744 | 3744 | controllerStyles, vidcapStyles, captionLabel, popupMenuId; |
|
3764 | 3764 | for (i = 0; i <= 3; i++) { |
3765 | 3765 | controls = controlLayout[sectionByOrder[i]]; |
3766 | 3766 | if ((i % 2) === 0) { |
3767 | | - controllerSpan = $('<span>',{ |
| 3767 | + $controllerSpan = $('<div>',{ |
3768 | 3768 | 'class': 'able-left-controls' |
3769 | 3769 | }); |
3770 | 3770 | } |
3771 | 3771 | else { |
3772 | | - controllerSpan = $('<span>',{ |
| 3772 | + $controllerSpan = $('<div>',{ |
3773 | 3773 | 'class': 'able-right-controls' |
3774 | 3774 | }); |
3775 | 3775 | } |
3776 | | - this.$controllerDiv.append(controllerSpan); |
| 3776 | + this.$controllerDiv.append($controllerSpan); |
3777 | 3777 | for (j=0; j<controls.length; j++) { |
3778 | 3778 | control = controls[j]; |
3779 | 3779 | if (control === 'seek') { |
3780 | 3780 | var sliderDiv = $('<div class="able-seekbar"></div>'); |
3781 | | - controllerSpan.append(sliderDiv); |
| 3781 | + $controllerSpan.append(sliderDiv); |
3782 | 3782 | this.seekBar = new AccessibleSeekBar(sliderDiv, baseSliderWidth); |
3783 | 3783 | } |
3784 | 3784 | else if (control === 'pipe') { |
|
3798 | 3798 | }); |
3799 | 3799 | pipe.append(pipeImg); |
3800 | 3800 | } |
3801 | | - controllerSpan.append(pipe); |
| 3801 | + $controllerSpan.append(pipe); |
3802 | 3802 | } |
3803 | 3803 | else { |
3804 | 3804 | // this control is a button |
|
4011 | 4011 | } |
4012 | 4012 | } |
4013 | 4013 |
|
4014 | | - controllerSpan.append(newButton); |
| 4014 | + $controllerSpan.append(newButton); |
4015 | 4015 |
|
4016 | 4016 | // create variables of buttons that are referenced throughout the AblePlayer object |
4017 | 4017 | if (control === 'play') { |
|
4056 | 4056 | } |
4057 | 4057 | if (control === 'volume') { |
4058 | 4058 | // in addition to the volume button, add a hidden slider |
4059 | | - this.addVolumeSlider(controllerSpan); |
| 4059 | + this.addVolumeSlider($controllerSpan); |
4060 | 4060 | } |
4061 | 4061 | } |
4062 | 4062 | if ((i % 2) == 1) { |
|
5280 | 5280 | this.seekHead.attr('tabindex', '0'); |
5281 | 5281 | // Since head is focusable, it gets the aria roles/titles. |
5282 | 5282 | this.seekHead.attr('role', 'slider'); |
5283 | | - this.seekHead.attr('aria-value-min', 0); |
| 5283 | + this.seekHead.attr('aria-valuemin', 0); |
5284 | 5284 |
|
5285 | 5285 | this.timeTooltip = $('<div>'); |
5286 | 5286 | this.bodyDiv.append(this.timeTooltip); |
|
5454 | 5454 | if (duration !== this.duration) { |
5455 | 5455 | this.duration = duration; |
5456 | 5456 | this.resetHeadLocation(); |
5457 | | - this.seekHead.attr('aria-value-max', duration); |
| 5457 | + this.seekHead.attr('aria-valuemax', duration); |
5458 | 5458 | } |
5459 | 5459 | }; |
5460 | 5460 |
|
|
5577 | 5577 | } |
5578 | 5578 |
|
5579 | 5579 | /* Uncomment to use aria values instead of separate live region. |
5580 | | - this.seekHead.attr('aria-value-text', descriptionText); |
| 5580 | + this.seekHead.attr('aria-valuetext', descriptionText); |
5581 | 5581 | this.seekHead.attr('aria-valuenow', Math.floor(position).toString());*/ |
5582 | 5582 | }; |
5583 | 5583 |
|
|
5680 | 5680 | 'class': 'able-volume-head', |
5681 | 5681 | 'role': 'slider', |
5682 | 5682 | 'aria-label': this.tt.volumeUpDown, |
5683 | | - 'aria-value-min': 0, |
5684 | | - 'aria-value-max': 10, |
| 5683 | + 'aria-valuemin': 0, |
| 5684 | + 'aria-valuemax': 10, |
5685 | 5685 | 'tabindex': 0 /* should be -1, then change to 0 dynamically & place focus when visible */ |
5686 | 5686 | }); |
5687 | 5687 | this.$volumeSliderTrack.append(this.$volumeSliderTrackOn,this.$volumeSliderHead); |
|
7100 | 7100 | widthUsed = 0; |
7101 | 7101 | seekbarSpacer = 40; // adjust for discrepancies in browsers' calculated button widths |
7102 | 7102 |
|
7103 | | - leftControls = this.seekBar.wrapperDiv.parent().prev('span.able-left-controls'); |
7104 | | - rightControls = leftControls.next('span.able-right-controls'); |
| 7103 | + leftControls = this.seekBar.wrapperDiv.parent().prev('div.able-left-controls'); |
| 7104 | + rightControls = leftControls.next('div.able-right-controls'); |
7105 | 7105 | leftControls.children().each(function () { |
7106 | 7106 | if ($(this).prop('tagName')=='BUTTON') { |
7107 | 7107 | widthUsed += $(this).width(); |
|
9053 | 9053 | }; |
9054 | 9054 |
|
9055 | 9055 | var addDescription = function(div, desc) { |
9056 | | - var descDiv = $('<div class="able-desc"><span class="able-hidden">Description: </span></div>'); |
| 9056 | + var $descDiv = $('<div>', { |
| 9057 | + 'class': 'able-desc' |
| 9058 | + }); |
| 9059 | + var $descHiddenSpan = $('<span>',{ |
| 9060 | + 'class': 'able-hidden' |
| 9061 | + }); |
| 9062 | + $descHiddenSpan.text('Description: '); |
| 9063 | + $descDiv.append($descHiddenSpan); |
9057 | 9064 |
|
9058 | 9065 | var flattenComponentForDescription = function(comp) { |
9059 | 9066 | var result = []; |
|
9068 | 9075 | return result; |
9069 | 9076 | } |
9070 | 9077 |
|
9071 | | - var descSpan = $('<span class="able-transcript-seekpoint"></span>'); |
| 9078 | + var $descSpan = $('<span>',{ |
| 9079 | + 'class': 'able-transcript-seekpoint' |
| 9080 | + }); |
9072 | 9081 | for (var ii in desc.components.children) { |
9073 | 9082 | var results = flattenComponentForDescription(desc.components.children[ii]); |
9074 | 9083 | for (var jj in results) { |
9075 | | - descSpan.append(results[jj]); |
| 9084 | + $descSpan.append(results[jj]); |
9076 | 9085 | } |
9077 | 9086 | } |
9078 | | - descSpan.attr('data-start', desc.start.toString()); |
9079 | | - descSpan.attr('data-end', desc.end.toString()); |
9080 | | - descDiv.append(descSpan); |
| 9087 | + $descSpan.attr('data-start', desc.start.toString()); |
| 9088 | + $descSpan.attr('data-end', desc.end.toString()); |
| 9089 | + $descDiv.append($descSpan); |
9081 | 9090 |
|
9082 | | - div.append(descDiv); |
| 9091 | + div.append($descDiv); |
9083 | 9092 | }; |
9084 | 9093 |
|
9085 | 9094 | var addCaption = function(div, cap) { |
9086 | 9095 |
|
9087 | | - var capSpan = $('<span class="able-transcript-seekpoint able-transcript-caption"></span>'); |
| 9096 | + var $capSpan = $('<span>',{ |
| 9097 | + 'class': 'able-transcript-seekpoint able-transcript-caption' |
| 9098 | + }); |
9088 | 9099 |
|
9089 | 9100 | var flattenComponentForCaption = function(comp) { |
9090 | 9101 |
|
|
9106 | 9117 |
|
9107 | 9118 | if ((hasParens && hasBrackets && openBracket < openParen) || hasBrackets) { |
9108 | 9119 | result = result.concat(flattenString(str.substring(0, openBracket))); |
9109 | | - result.push($('<div></div><span class="able-unspoken">' + str.substring(openBracket, closeBracket + 1) + '</span>')); |
9110 | | - result = result.concat(flattenString(str.substring(closeBracket + 1))); |
| 9120 | + var $silentSpan = $('<span>',{ |
| 9121 | + 'class': 'able-unspoken' |
| 9122 | + }); |
| 9123 | + $silentSpan.text(str.substring(openBracket, closeBracket + 1)); |
| 9124 | + result.push($silentSpan); |
| 9125 | + result = result.concat(flattenString(str.substring(openParen, closeParen + 1))); |
9111 | 9126 | } |
9112 | 9127 | else if (hasParens) { |
9113 | 9128 | result = result.concat(flattenString(str.substring(0, openParen))); |
9114 | | - result.push($('<div></div><span class="able-unspoken">' + str.substring(openParen, closeParen + 1) + '</span>')); |
| 9129 | + var $silentSpan = $('<span>',{ |
| 9130 | + 'class': 'able-unspoken' |
| 9131 | + }); |
| 9132 | + $silentSpan.text(str.substring(openBracket, closeBracket + 1)); |
| 9133 | + result.push($silentSpan); |
9115 | 9134 | result = result.concat(flattenString(str.substring(closeParen + 1))); |
9116 | 9135 | } |
9117 | 9136 | else { |
|
9124 | 9143 | result = result.concat(flattenString(comp.value)); |
9125 | 9144 | } |
9126 | 9145 | else if (comp.type === 'v') { |
9127 | | - var vSpan = $('<div></div><span class="able-unspoken">[' + comp.value + ']</span>'); |
9128 | | - result.push(vSpan); |
| 9146 | + var $vSpan = $('<span>',{ |
| 9147 | + 'class': 'able-unspoken' |
| 9148 | + }); |
| 9149 | + $vSpan.text('[ ' + comp.value + ' ]'); |
| 9150 | + result.push($vSpan); |
9129 | 9151 | for (var ii in comp.children) { |
9130 | 9152 | var subResults = flattenComponentForCaption(comp.children[ii]); |
9131 | 9153 | for (var jj in subResults) { |
|
9166 | 9188 | // add <br> BETWEEN each caption and WITHIN each caption (if payload includes "\n") |
9167 | 9189 | result = result.replace('\n','<br>') + '<br>'; |
9168 | 9190 | } |
9169 | | - capSpan.append(result); |
| 9191 | + $capSpan.append(result); |
9170 | 9192 | } |
9171 | 9193 | } |
9172 | | - capSpan.attr('data-start', cap.start.toString()); |
9173 | | - capSpan.attr('data-end', cap.end.toString()); |
9174 | | - div.append(capSpan); |
| 9194 | + $capSpan.attr('data-start', cap.start.toString()); |
| 9195 | + $capSpan.attr('data-end', cap.end.toString()); |
| 9196 | + div.append($capSpan); |
9175 | 9197 | div.append('\n'); |
9176 | 9198 | }; |
9177 | 9199 |
|
|
0 commit comments