Active
Project:
RefreshLess
Version:
8.x-1.x-dev
Component:
User interface
Priority:
Normal
Category:
Task
Assigned:
Unassigned
Issue tags:
Reporter:
Created:
28 Mar 2016 at 22:36 UTC
Updated:
27 Apr 2016 at 14:19 UTC
Jump to comment: Most recent
Comments
Comment #2
andrewmacpherson commentedWhen a page updates via RefreshLess, the <title> does not update.
If a user switches to another window or tab (say to do something in their word processor) they may have difficulty finding their way back to the correct browser tab.
Comment #3
andrewmacpherson commentedA screenreader doesn't announce that the page has changed, because no full-page load has taken place.
Testing with ChromeVox:
Normally when clicking a link to a new page, ChromeVox makes a special noise when the link is activated, then another special noise to signify a new page loaded, then announces new page title.
With RefreshLess, activating a link causes the link-activation noise, then repeats the name of the link. The new "page" is not announced, and the the keyboard focus shifts to the site-name (home) link.
Comment #4
andrewmacpherson commentedTesting with Firefox, Windows 8.1, NVDA 2016.1 (default NVDA settings, I never fiddle with them).
Normally, following a link cause the new page title to be announced.
With RefreshLess there is no audio feedback. The page content changes, but the title isn't announced. NVDA doesn't make many special noises for events.
Comment #5
andrewmacpherson commentedCome to think of it the page title not changing could cause problems for anyone who refers to the window/tab title, not just screenreader users.
Added #2695773: Update HTML title element when following RefreshLess links
Comment #6
andrewmacpherson commentedAdded #2695777: Announce new content to screenreader users when navigating using RefreshLess.
Changing this to a meta-issue, updating title and summary.
Comment #7
andrewmacpherson commentedComment #8
mgiffordI'm very interested in hearing more about this and BigPipe accessibility issues.
Comment #9
wim leers#8: this is RefreshLess, not BigPipe.
@andrewmacpherson: #2695773: Update HTML title element when following RefreshLess links is a duplicate of #2692317: Make everything in <head> update: <title>, <meta> tags, etc..
Comment #10
wim leersAlso, that's not even an accessibility issue, it's necessary for this to work correctly at all. But this is an alpha release of a prototype. Please bear with us :)
Comment #11
andrewmacpherson commentedThanks Wim. No worries, I understand it's very new. I was keen to try it with a screenreader because I expect it to be a popular module that site builders just enable-and-forget.
Comment #12
wim leersThat's the ambition :)
Comment #13
mgiffordYup. I'm with @andrewmacpherson seems like there is a lot of potential here. As far as BigPipe, I was just following "Combined with the BigPipe module (which offers significant improvements for the initial page load), this should make just about any Drupal site feel significantly faster." from the project page. I have reached out to Facebook, but haven't heard back from them... I should just go bug Jesse and get her to give me the low-down.
Comment #14
wim leersOh, right. I misread! Sorry :)
+1 to all that.
Comment #15
andrewmacpherson commentedComment #16
jessebeach commentedThe history API with push/popState might cause a screen reader to recognize a page transition:
https://developer.mozilla.org/en-US/docs/Web/API/History_API
Comment #17
wim leersJesse is here!! \o/
Jesse, this already uses the History API. And see the link at #2695777-7: Announce new content to screenreader users when navigating using RefreshLess which points out that there are also big accessibility problems with Turbolinks itself. Which suggests BaseCamp has poor accessibility.
Comment #18
wim leers#2695777: Announce new content to screenreader users when navigating using RefreshLess has landed. AFAICT that means all accessibility issues have been addressed.
Comment #19
andrewmacpherson commentedThere a few more things to do, been meaning to check in and write them up. Sorry, they went to the back of my mind...
1. Focus behaves unpredictably. Let's say we follow a link in the main menu. It's still there after the page is updated, and focus remains there. But if we follow a link which doesn't exist on the resulting page (e.g. a link in main content) then focus ends up... somewhere. Often focus goes to the site logo link.
I propose we programmatically shift focus back to the start of the body element after following a link. This is where focus would be if we were loading the page for the first time in entirity (or Refreshless wasn't enabled). Pressing TAB for the first time would bring the skip-to-main-content link into focus.
2. The viewport didn't shift - but I see this has been fixed with a scrollToTop() method in the latest code, and it's behaving well. Nice!
3. Let's document the accessibility. From personal experience of talking about accessibility at dev meetups, it's commonly thought that Ajax or single-page apps are inaccessible. It would be good to let module evaluators know what has been addressed so they can enable it with confidence.
Comment #20
andrewmacpherson commentedComment #21
wim leersMakes sense!
Yep :) In #2713499: When navigating to a new page, it should be scrolled to the top + navigating to a fragment on another page broken in Firefox.
Great plan!
Wanna open child issues for 1 and 3?
Comment #22
andrewmacpherson commentedWill do. The issue queue is looking very green now!
Comment #23
wim leersIt is :)
Comment #24
andrewmacpherson commentedAdded #2714377: Document accessibility of Refreshless module
Comment #25
andrewmacpherson commentedAdded #2714383: Make focus behave the same as it does without RefreshLess
Comment #26
wim leersThanks!