This commit makes Tridactyl aware of elements made interactive through
JavaScript and lets Tridactyl put hints on them.
Something possibly dangerous is done here: exporting a function to the
page's context. While it is believed that the current implementation is
secure and that pages can't discover whether the function has been
exported or not, this might change due to new standards being adopted by
firefox. One of these standards is the Custom Elements api:
https://developer.mozilla.org/en-US/docs/Web/Web_Components/Custom_Elements
It will be necessary to check how Tridactyl behaves once this API has
landed. The status of this API seems to be tracked here:
https://bugzilla.mozilla.org/show_bug.cgi?id=1406825
hintmode = "simple" is the default hinting mode, naming hints using
the hintchars configuration. It is the current tridactyl behavior and
is preserved unchanged.
hintmode = "vimperator" is a new hinting mode that allows the user to
filter hints using non-hintchar :alnum: characters. Hints with targets
whose html does not contain these characters as a subsequence (not
contiguous) will be filtered out.
This adds the ability to save link targets or images. The save location
can be default, or the save as dialog can be invoked.
Somewhat sensible default filenames are provided.
Data URLs are also supported (though they need quite a bit of massaging
to get past the WebExt security limitations). Specificially, they need
to be round-tripped though a Blob, and must be saved from the background
context.
This adds an excmd interface to the Web Speech API (TTS), which allows
users to read text out and set voice and parameters via config options.
Excmds:
- ttsread: reads out the given text or element content (CSS selected)
- ttsvoices: lists available voice names (can be used in the
'ttsvoice' option)
- ttscontrol: stops the current reading (should also pause/resume,
but that doesn't seem to work right now)
Config options:
- ttsvoice: the name of the voice to use
- ttsrate: (0.1-10)
- ttsvolume: (0-1)
- ttspitch: (0-2)
Also the ;r hint submode is added which reads the textcontent of the
element with the configured voice
The DOM.getElemsBySelector function makes it a bit less verbose to
construct an array of filtered elements matching a selector.
Also, this function is expanded to take multiple filters, applied
sequentially.
THis yanks the page URL with the hinted elements id or title as a hash
fragment, which can be used to link to the page at that element's
location.
For example: https://en.wikipedia.org/wiki/Vim_(text_editor)#History
;# nmap added, from Vimperator