/WebVox/res/raw/mgmail.user.js

http://eyes-free.googlecode.com/ · JavaScript · 64 lines · 46 code · 10 blank · 8 comment · 11 complexity · f7c212b77900f39dd888f6bb61020d03 MD5 · raw file

  1. // ==UserScript==
  2. // @name Gmail
  3. // @description Gmail (Mobile) Script
  4. // @author Charles L. Chen
  5. // @include https://mail.google.com/mail/s/*
  6. // ==/UserScript==
  7. var inputFocused = false;
  8. function speak(textStr, queueMode, paramsArray){
  9. window.ttsHelper.speak(textStr, queueMode);
  10. //alert(textStr);
  11. }
  12. //TODO: Come up with a working escape sequence!
  13. function keyPressHandler(evt){
  14. var keyCode = evt.keyCode;
  15. if (inputFocused){
  16. return true;
  17. }
  18. if (keyCode == 106) { // j
  19. window.setTimeout(speakCurrentMessage,0);
  20. return true;
  21. }
  22. if (keyCode == 107) { // k
  23. window.setTimeout(speakCurrentMessage,0);
  24. return true;
  25. }
  26. return true;
  27. }
  28. function findCurrentMessage(){
  29. var messageNodes = document.getElementsByClassName("a H Id");
  30. var message;
  31. for (var i=0; message = messageNodes[i]; i++){
  32. if (message.style.cssText.indexOf("visibility: visible;") != -1){
  33. return message.parentNode;
  34. }
  35. }
  36. }
  37. function speakCurrentMessage(){
  38. var message = findCurrentMessage();
  39. speak(message.textContent, 2, null);
  40. }
  41. function focusHandler(evt){
  42. if (evt.target.tagName &&
  43. evt.target.tagName == 'INPUT'){
  44. inputFocused = true;
  45. }
  46. return true;
  47. }
  48. function blurHandler(evt){
  49. inputFocused = false;
  50. return true;
  51. }
  52. document.addEventListener('keypress', keyPressHandler, true);
  53. document.addEventListener('focus', focusHandler, true);
  54. document.addEventListener('blur', blurHandler, true);