added accessibility: tab+enter navigation for quizz e.g.
This commit is contained in:
parent
2d521d8340
commit
ced5383530
7 changed files with 14219 additions and 18 deletions
2
dist/xrfragment.aframe.all.js
vendored
2
dist/xrfragment.aframe.all.js
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* v0.5.1 generated at Mon Jun 17 12:41:29 PM UTC 2024
|
* v0.5.1 generated at Mon Jun 17 01:53:03 PM UTC 2024
|
||||||
* https://xrfragment.org
|
* https://xrfragment.org
|
||||||
* SPDX-License-Identifier: MPL-2.0
|
* SPDX-License-Identifier: MPL-2.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
2
dist/xrfragment.aframe.js
vendored
2
dist/xrfragment.aframe.js
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* v0.5.1 generated at Mon Jun 17 12:41:29 PM UTC 2024
|
* v0.5.1 generated at Mon Jun 17 01:53:03 PM UTC 2024
|
||||||
* https://xrfragment.org
|
* https://xrfragment.org
|
||||||
* SPDX-License-Identifier: MPL-2.0
|
* SPDX-License-Identifier: MPL-2.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
14193
dist/xrfragment.module.js
vendored
14193
dist/xrfragment.module.js
vendored
File diff suppressed because it is too large
Load diff
18
dist/xrfragment.plugin.frontend.js
vendored
18
dist/xrfragment.plugin.frontend.js
vendored
|
|
@ -343,10 +343,11 @@ window.accessibility = (opts) => new Proxy({
|
||||||
setupHrefCycling(){
|
setupHrefCycling(){
|
||||||
// speak arrow keys
|
// speak arrow keys
|
||||||
window.addEventListener('keydown', (e) => {
|
window.addEventListener('keydown', (e) => {
|
||||||
if( e.key != 'Tab') return
|
console.log(e.key)
|
||||||
|
if( e.key != "Tab" && e.key != "Enter" ) return
|
||||||
let subScene = xrf.scene.getObjectByName( xrf.frag.pos.last )
|
let subScene = xrf.scene.getObjectByName( xrf.frag.pos.last )
|
||||||
if( !subScene ) subScene = xrf.scene
|
if( !subScene ) subScene = xrf.scene
|
||||||
let cache = this.setupHrefCycling.cache = this.setupHrefCycling.cache || {current: 0}
|
let cache = this.setupHrefCycling.cache = this.setupHrefCycling.cache || {current: -1}
|
||||||
let objects = []
|
let objects = []
|
||||||
subScene.traverse( (n) => (n.userData.href || n.userData['aria-description']) && objects.push(n) )
|
subScene.traverse( (n) => (n.userData.href || n.userData['aria-description']) && objects.push(n) )
|
||||||
|
|
||||||
|
|
@ -368,13 +369,16 @@ window.accessibility = (opts) => new Proxy({
|
||||||
notify(`${n.userData['aria-description']||''}` + (n.userData.href ? `<br><b>name:</b> ${n.name}<br><b>link:</b> ${n.userData['href']}` :'') )
|
notify(`${n.userData['aria-description']||''}` + (n.userData.href ? `<br><b>name:</b> ${n.name}<br><b>link:</b> ${n.userData['href']}` :'') )
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure valid href
|
if( e.key == 'Enter' && objects[cache.current].userData.href ){
|
||||||
cache.current = cache.current % objects.length
|
xrf.navigator.to( objects[cache.current].userData.href )
|
||||||
highlight( objects[cache.current] )
|
}
|
||||||
console.log(objects[cache.current].userData.href)
|
|
||||||
|
|
||||||
// increment to next
|
// increment to next
|
||||||
cache.current = cache.current + 1
|
cache.current = (cache.current + 1) % objects.length
|
||||||
|
|
||||||
|
if( e.key == 'Tab'){
|
||||||
|
highlight( objects[cache.current] )
|
||||||
|
}
|
||||||
|
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
return false
|
return false
|
||||||
|
|
|
||||||
2
dist/xrfragment.three.js
vendored
2
dist/xrfragment.three.js
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* v0.5.1 generated at Mon Jun 17 12:41:29 PM UTC 2024
|
* v0.5.1 generated at Mon Jun 17 01:53:03 PM UTC 2024
|
||||||
* https://xrfragment.org
|
* https://xrfragment.org
|
||||||
* SPDX-License-Identifier: MPL-2.0
|
* SPDX-License-Identifier: MPL-2.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
2
dist/xrfragment.three.module.js
vendored
2
dist/xrfragment.three.module.js
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* v0.5.1 generated at Mon Jun 17 12:41:29 PM UTC 2024
|
* v0.5.1 generated at Mon Jun 17 01:53:03 PM UTC 2024
|
||||||
* https://xrfragment.org
|
* https://xrfragment.org
|
||||||
* SPDX-License-Identifier: MPL-2.0
|
* SPDX-License-Identifier: MPL-2.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -91,10 +91,11 @@ window.accessibility = (opts) => new Proxy({
|
||||||
setupHrefCycling(){
|
setupHrefCycling(){
|
||||||
// speak arrow keys
|
// speak arrow keys
|
||||||
window.addEventListener('keydown', (e) => {
|
window.addEventListener('keydown', (e) => {
|
||||||
if( e.key != 'Tab') return
|
console.log(e.key)
|
||||||
|
if( e.key != "Tab" && e.key != "Enter" ) return
|
||||||
let subScene = xrf.scene.getObjectByName( xrf.frag.pos.last )
|
let subScene = xrf.scene.getObjectByName( xrf.frag.pos.last )
|
||||||
if( !subScene ) subScene = xrf.scene
|
if( !subScene ) subScene = xrf.scene
|
||||||
let cache = this.setupHrefCycling.cache = this.setupHrefCycling.cache || {current: 0}
|
let cache = this.setupHrefCycling.cache = this.setupHrefCycling.cache || {current: -1}
|
||||||
let objects = []
|
let objects = []
|
||||||
subScene.traverse( (n) => (n.userData.href || n.userData['aria-description']) && objects.push(n) )
|
subScene.traverse( (n) => (n.userData.href || n.userData['aria-description']) && objects.push(n) )
|
||||||
|
|
||||||
|
|
@ -116,13 +117,16 @@ window.accessibility = (opts) => new Proxy({
|
||||||
notify(`${n.userData['aria-description']||''}` + (n.userData.href ? `<br><b>name:</b> ${n.name}<br><b>link:</b> ${n.userData['href']}` :'') )
|
notify(`${n.userData['aria-description']||''}` + (n.userData.href ? `<br><b>name:</b> ${n.name}<br><b>link:</b> ${n.userData['href']}` :'') )
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure valid href
|
if( e.key == 'Enter' && objects[cache.current].userData.href ){
|
||||||
cache.current = cache.current % objects.length
|
xrf.navigator.to( objects[cache.current].userData.href )
|
||||||
highlight( objects[cache.current] )
|
}
|
||||||
console.log(objects[cache.current].userData.href)
|
|
||||||
|
|
||||||
// increment to next
|
// increment to next
|
||||||
cache.current = cache.current + 1
|
cache.current = (cache.current + 1) % objects.length
|
||||||
|
|
||||||
|
if( e.key == 'Tab'){
|
||||||
|
highlight( objects[cache.current] )
|
||||||
|
}
|
||||||
|
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
return false
|
return false
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue