AutoSaveDiv

save and restores div.contenteditable texts

当前为 2014-12-21 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name AutoSaveDiv
  3. // @namespace AutoSaveDiv
  4. // @description save and restores div.contenteditable texts
  5. // @include *
  6. // @version 1
  7. // @grant GM_setValue
  8. // @grant GM_getValue
  9. // @author Dediggefedde
  10. // ==/UserScript==
  11.  
  12. var active=false;
  13. var isCtrl=false;
  14. var isShift=false;
  15. var isAlt=false;
  16. var name="";
  17. var altstil;
  18. var img=document.createElement("div");
  19.  
  20. img.addEventListener("contextmenu",function(e){
  21. console.log(name);
  22. img.previousSibling.innerHTML=GM_getValue(name);
  23. e.preventDefault();
  24. return false;
  25. },false);
  26.  
  27. img.addEventListener("click",function(e){
  28. e.preventDefault();
  29. if(e.which==1)listenView(img.previousSibling);
  30. // else if(e.which==3)
  31. return false;
  32. },true);
  33. function listenView(el){
  34. active=!active;
  35. if(active){
  36. console.log(el);
  37. img.style.backgroundColor="red";
  38. altstil=el.style.border;
  39. el.style.border="1px solid red";
  40. }else {
  41. img.style.backgroundColor="blue";
  42. el.style.border=altstil;
  43. }
  44. }
  45.  
  46. document.addEventListener("click",function(e){
  47. if(this==img||active)return false;
  48. if(document.activeElement.tagName=="DIV"&&document.activeElement.getAttribute("contenteditable")){
  49. name=location.host+"::"+document.activeElement.tagName+"_"+document.activeElement.className+"_"+document.activeElement.id;
  50. img.setAttribute("style","width:20px;height:20px;position:relative;margin-top:-20px;opacity:0.5;border:1px solid blue;background-color:blue;border-top-right-radius:15px;");
  51. img.title="leftclick: de-/activate capturing text!\nrightclick: restore last text!\nstored:\n"+GM_getValue(name);
  52. document.activeElement.parentNode.insertBefore(img, document.activeElement.nextSibling);
  53. }
  54. },true);
  55.  
  56. document.addEventListener("keydown",function(e){
  57. switch(e.which){
  58. case 17:isCtrl=true;break;
  59. case 16:isShift=true;break;
  60. case 18:isAlt=true;break;
  61. default:
  62. };
  63. },true);
  64.  
  65. document.addEventListener("keyup",function(e){
  66. switch(e.which){
  67. case 17:isCtrl=false;break;
  68. case 16:isShift=false;break;
  69. case 18:isAlt=false;break;
  70. case 68: //d
  71. if(isShift&&isCtrl&&isAlt){
  72. listenView(document.activeElement);
  73. }
  74. break;
  75. case 83: //s
  76. if(!active&&isShift&&isCtrl&&isAlt)document.activeElement.innerHTML=GM_getValue(name);
  77. break;
  78. default:
  79. };
  80. if(active){
  81. GM_setValue(name,document.activeElement.innerHTML);
  82. img.title="leftclick: de-/activate capturing text!\nrightclick: restore last text!\nstored:\n"+GM_getValue(name);
  83. }
  84. },true);