Edge Local File Enhancer

Enhance the experience of viewing local files on Edge.

目前为 2023-10-19 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Edge Local File Enhancer
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1.1
  5. // @description Enhance the experience of viewing local files on Edge.
  6. // @author PRO
  7. // @match file:///*/
  8. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABt0lEQVR42oxStZoWQRCs2cXdHTLcHZ6EjAwnQWIkJyQlRt4Cd3d3d1n5d7q7ju1zv/q+mh6taQsk8fn29kPDRo87SDMQcNAUJgIQkBjdAoRKdXjm2mOH0AqS+PlkP8sfp0h93iu/PDji9s2FzSSJVg5ykZqWgfGRr9rAAAQiDFoB1OfyESZEB7iAI0lHwLREQBcQQKqo8p+gNUCguwCNAAUQAcFOb0NNGjT+BbUC2YsHZpWLhC6/m0chqIoM1LKbQIIBwlTQE1xAo9QDGDPYf6rkTpPc92gCUYVJAZjhyZltJ95f3zuvLYRGWWCUNkDL2333McBh4kaLlxg+aTmyL7c2xTjkN4Bt7oE3DBP/3SRz65R/bkmBRPGzcRNHYuzMjaj+fdnaFoJUEdTSXfaHbe7XNnMPyqryPcmfY+zURaAB7SHk9cXSH4fQ5rojgCAVIuqCNWgRhLYLhJB4k3iZfIPtnQiCpjAzeBIRXMA6emAqoEbQSoDdGxFUrxS1AYcpaNbBgyQBGJEOnYOeENKR/iAd1npusI4C75/c3539+nbUjOgZV5CkAU27df40lH+agUdIuA/EAgDmZnwZlhDc0wAAAABJRU5ErkJggg==
  9. // @grant none
  10. // @license gpl-3.0
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15. const path = location.href;
  16. if (!path.startsWith("file:///") || !path.endsWith("/")) return;
  17. const debug = false;
  18. const log = debug ? console.log.bind(console, "[ELFE]") : () => {};
  19. const $ = document.querySelector.bind(document);
  20. const $$ = document.querySelectorAll.bind(document);
  21. // const try_remove = (sel) => { const el = $(sel); if (el) el.remove(); };
  22.  
  23. const header = $("h1#header");
  24. const css = document.createElement("style");
  25. css.id = "elfe-css";
  26. css.textContent = `
  27. h1#header > a { color: initial; text-decoration: none; transition: color 0.2s ease-in-out; }
  28. h1#header > a:hover { color: -webkit-link; }
  29. table { margin: 0.5rem 0; width: auto; }
  30. table td, table th { padding: 0.3rem 0.5rem; vertical-align: middle; }
  31. #parentDir { padding: 0 0.5em 0; }
  32. thead th { border-left: 1px solid gray; border-right: 1px solid gray; transition: background-color 0.2s ease-in-out; }
  33. thead th:hover { background-color: #4d4d4d; }
  34. `;
  35. $("head").appendChild(css);
  36.  
  37. $("div#parentDirLinkBox").style.display = "none";
  38. const delimeter = header.textContent.includes("\\") ? "\\" : "/";
  39. const split = header.textContent.split(delimeter);
  40. const parts = split.slice(0, -1);
  41. header.innerHTML = '<a href="../" id="parentDir">↑</a>'
  42. + parts.map((part, i) =>
  43. `<a href="${parts.slice(0, i + 1).join(delimeter)}${delimeter}">${part}</a>`
  44. ).join(delimeter) + split.slice(-1)[0];
  45.  
  46. $$("td").forEach(td => {
  47. td.title = td.getAttribute("data-value") || td.textContent;
  48. });
  49.  
  50. const parentDir = $("#parentDir");
  51. document.addEventListener("keydown", e => {
  52. switch (e.key) {
  53. case "ArrowUp":
  54. if (parentDir) parentDir.click(); break;
  55. case "ArrowLeft":
  56. history.back(); break;
  57. case "ArrowRight":
  58. history.forward(); break;
  59. default: break;
  60. }
  61. });
  62. })();