Re: visited links


Luke Davis
 

On Jun 2, Ali Colak wrote:

To my knowledge, dictionary entries don't work on announcements, only
on what nvda is reading. I just tested it, and while it reads any
replacement of visited link as link, the announcements are still read
as usual.
It depends on the announcement.
But it's easy to see what's going on in this case, assuming you run with your log level set to debug, or use the Speech Logger add-on.

With my log level set to debug, as it always is, I read a visited link. The entire message was "visited link skip to content".
Then I pressed NVDA+F1 to open the log viewer. Moving up a couple lines, I found the following:

Speaking ['visited', 'link', 'Skip to content']

As you can see, each of those items--the visited, the link, and the name of the link--are spoken in separate strings. (Okay, since Brian wants me to be specific about technical details: they are called utterances, and the whole collection of utterances that make up a message is called a "sequence".)

The dictionary only works for things (utterances) spoken in single strings.

I suspect that NVDA is first determining that it is a link, so it prepares to say "link" by placing that utterance in the list (sequence).
Then it looks to see if that link has been visited. If it has, it installs another speech utterance of "visited", placing it prior to the utterance "link". Then it looks at the name of the link, and appends that at the end of the sequence.

Really it could be doing it in any order, I don't know which, but the result is as above: three separate utterances, triggering three separate dictionary passes.

There is no way to replace this particular kind of phrase.

Ironically, I was looking through my GitHub software projects just yesterday, and came across an add-on I had started writing called "Complex Speech Dict", that was designed to allow replacements for exactly this kind of message. I never finished it though, and had no memory of it at all, so may not have gone far with it.

Luke

Join {nvda@nvda.groups.io to automatically receive all group messages.