Personal emacs config
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.5 KiB

  1. // ==UserScript==
  2. // @name Skewer Everything
  3. // @description Add a toggle button to run Skewer on the current page
  4. // @lastupdated 2015-09-14
  5. // @version 1.3
  6. // @license Public Domain
  7. // @include /^https?:///
  8. // @grant none
  9. // @run-at document-start
  10. // ==/UserScript==
  11. window.skewerNativeXHR = XMLHttpRequest;
  12. window.skewerInject = inject;
  13. var host = 'http://localhost:8080';
  14. var toggle = document.createElement('div');
  15. toggle.onclick = inject;
  16. toggle.style.width = '0px';
  17. toggle.style.height = '0px';
  18. toggle.style.borderStyle = 'solid';
  19. toggle.style.borderWidth = '0 12px 12px 0';
  20. toggle.style.borderColor = 'transparent #F00 transparent transparent';
  21. toggle.style.position = 'absolute';
  22. toggle.style.right = 0;
  23. toggle.style.top = 0;
  24. toggle.style.zIndex = 214748364;
  25. var injected = false;
  26. function inject() {
  27. if (!injected) {
  28. var script = document.createElement('script');
  29. script.src = host + '/skewer';
  30. document.body.appendChild(script);
  31. toggle.style.borderRightColor = '#0F0';
  32. } else {
  33. /* break skewer to disable it */
  34. skewer.fn = null;
  35. toggle.style.borderRightColor = '#F00';
  36. }
  37. injected = !injected;
  38. localStorage._autoskewered = JSON.stringify(injected);
  39. }
  40. document.addEventListener('DOMContentLoaded', function() {
  41. /* Don't use on iframes. */
  42. if (window.top === window.self) {
  43. document.body.appendChild(toggle);
  44. if (JSON.parse(localStorage._autoskewered || 'false')) {
  45. inject();
  46. }
  47. }
  48. });