Submit to Tab on Ctrl + Click / Enter

Sets form's target to `_blank` when submitted via Ctrl + Left Mouse Button or Ctrl + Enter.

当前为 2024-03-01 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Submit to Tab on Ctrl + Click / Enter
  3. // @description Sets form's target to `_blank` when submitted via Ctrl + Left Mouse Button or Ctrl + Enter.
  4. // @namespace http://eldar.cz/myf/
  5. // @license CC0
  6. // @version 2.0.0
  7. // @grant none
  8. // @include *
  9. // ==/UserScript==
  10. const doc = document.documentElement;
  11. let isCtrlDown = false;
  12. let therForm = null;
  13. let origTarget = null;
  14. let shouldCleanUp = false;
  15. doc.addEventListener('keyup', keyup, true);
  16. doc.addEventListener('keydown', keydown, true);
  17. doc.addEventListener('submit', submit, true);
  18. window.addEventListener('blur', blur, true);
  19. function keyup(event){
  20. console.log(event);
  21. if ( event.key === "Control" ) {
  22. cleanup();
  23. }
  24. }
  25. function keydown(event){
  26. if ( event.key === "Control" && !isCtrlDown) {
  27. console.log(event);
  28. isCtrlDown = true;
  29. }
  30. }
  31. function submit(event){
  32. console.log(event);
  33. const tgt = event.target;
  34. if(isCtrlDown && !shouldCleanUp) {
  35. therForm = tgt;
  36. origTarget = therForm.target;
  37. therForm.target = '_blank';
  38. shouldCleanUp = true;
  39. }
  40. }
  41.  
  42. function blur(event) {
  43. console.log(event);
  44. cleanup()
  45. }
  46.  
  47. function cleanup(){
  48. if(shouldCleanUp) {
  49. console.log('cleanup');
  50. therForm.target = origTarget;
  51. isCtrlDown = false;
  52. therForm = null;
  53. origTarget = null;
  54. shouldCleanUp = false;
  55. }
  56. }