[nvda-addons] Website specific nvda script?

  • From: Flint Million <fmillion@xxxxxxxxx>
  • To: "nvda-addons@xxxxxxxxxxxxx" <nvda-addons@xxxxxxxxxxxxx>
  • Date: Mon, 6 Oct 2014 12:55:55 -0500

Hi all,

I'm working on a project for my job at my college, and I was wondering if 
something already exists for this or if it is something I will need to code 
manually.

We have some very poorly designed websites that, while basically accessible, 
are a serious challenge for the user to navigate. Additionally, some of these 
websites have information that update in real time, and the user needs to 
become aware of these changes, but may not need to hear all of the information. 
They also may not need to be aware of all changes, but only some.

The user experience for this scenario would be that on a webpage that has 
dynamically updating content (via JavaScript or Ajax) that user would be able 
to press a keystroke to hear a certain object read aloud. For A very loose 
example, suppose that you had a clock on a webpage that updated in real-time. 
The user could press a keystroke to have the clock read out loud. Let's also 
say that every time the hour changes the user needs to know (but not when the 
minute changes), so NVDA would constantly monitor the clock and when it saw a 
change in the hour it would do something, for example, play a sound. Let's 
assume that the clock is simply text and that NVDA has to use python to perform 
some text processing to determine when this change occurs. That would allow the 
user to then press the keystroke to hear the clock read out loud.

It is possible for me to locate the object in question using the DOM or by 
simply using NVDA's object navigation capability. 

Simply reading the object may be insufficient. NVDA may, for instance, perform 
some manipulation of the text before reading it aloud. Using our Clock example, 
NVDA would have to take "4:00p" and then it into "4 o'clock PM." 

Or, perhaps NVDA takes some action on the user's behalf when the keystroke is 
pressed.  Again, a very loose example would be pressing a specific button on a 
webpage. Well designed websites may create hotkeys, but as we know not all 
websites do. 

The basic idea is that I want to be able to interact with the webpage – read 
its contents and interact with it controls – from an NVDA script within an 
addon. I also want the script to only work on certain pages, because obviously 
the DOM will be different per page and therefore many of the Scripts commands 
will not work On other pages. This gives me access to the powerful python 
environment for things such as string processing.

The question therefore is twofold:

1. Can NVDA access a webpage DOM from within an add on? Also, can NVDA directly 
interact with the webpage on the users behalf? This might mean clicking buttons 
or links, entering data into fields, or even performing mouse over gestures.

2. Is it possible to create an addon that only applies to a specific website or 
webpage?

The second task I could see being feasible even if not inherently supported by 
simply writing a browser add-on that could examine the URL and look for Scripts 
in a directory that match it in someway. This I would be able to do as I have 
already done a lot of work with plugin based apps in python. I was more 
wondering if something has already been designed for this.

In an ideal world, all websites would be easy to navigate and easily 
accessible. In the real world, however, challenges such as these create 
situations were using a website is so challenging and frustrating that it 
discourages the users. If there are other alternatives that did not involve 
asking the webmaster to change the site, I would also entertain ideas there.

I'm also not worrying about the fact that websites change. If that happens, it 
is understood that scripts will need to be updated to reflect this. Similarly 
to how if an application is updated scripts must also be changed.

Note that The examples I gave are not the real project, but were merely for 
illustrative purposes. (Therefore, (This isn't meant to be rude,) no "this is 
how to do an hourly chime on the clock in Nvda" replies please. :-) )

Any advice about this situation would be greatly appreciated!

Thanks!

Flint

Sent from my 
iPhone----------------------------------------------------------------

NVDA add-ons Central: A list for discussing NVDA add-ons

To post a message, send an email to nvda-addons@xxxxxxxxxxxxx.

To unsubscribe, send an email with the subject line of "unsubscribe" (without 
quotes) to nvda-addons-request@xxxxxxxxxxxxx.

If you have questions for list moderators, please send a message to 
nvda-addons-moderators@xxxxxxxxxxxxx.

Community addons can be found here: http://addons.nvda-project.org

Other related posts: