grafana-html-decode

grafana html decode

当前为 2025-02-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name grafana-html-decode
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.9
  5. // @description grafana html decode
  6. // @author chong
  7. // @include *://*.otr-devops.cn.svc.corpintra.net/*
  8. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12. (function() {
  13. 'use strict';
  14.  
  15. // HTML解码函数
  16. function decodeHTML(html) {
  17. var txt = document.createElement('textarea');
  18. txt.innerHTML = html;
  19. return txt.value;
  20. }
  21.  
  22. // 解码指定元素的内容
  23. function decodeHTMLForElements(elements) {
  24. elements.forEach(element => {
  25. element.innerHTML = decodeHTML(element.innerHTML);
  26. });
  27. }
  28.  
  29. // 主解码逻辑
  30. function decodeAll() {
  31.  
  32. // 解码所有具有特定类名的元素
  33. const messageElements = document.querySelectorAll('.css-uev0p3-logs-row__message');
  34. decodeHTMLForElements(messageElements);
  35.  
  36. // 解码所有表格单元格内容
  37. const tableCells = document.querySelectorAll('.css-xdnfhu-logs-row-details-table');
  38. decodeHTMLForElements(tableCells);
  39.  
  40. console.log('解码完成!');
  41. }
  42.  
  43. // 动态添加解码按钮
  44. function addDecodeButton() {
  45. // 选择所有符合条件的 <button> 元素
  46. const targetButtons = document.querySelectorAll('button.show-on-hover.css-pi41z0-toolbar-button-panel-menu[title="Menu"][data-testid*="Panel menu Logs"]');
  47.  
  48. targetButtons.forEach((targetButton) => {
  49. // 检查是否已经添加过按钮
  50. if (!targetButton.nextElementSibling || !targetButton.nextElementSibling.classList.contains('custom-decode-button')) {
  51. // 创建新的按钮
  52. const decodeButton = document.createElement('button');
  53. decodeButton.className = 'custom-decode-button css-pi41z0-toolbar-button-panel-menu';
  54. decodeButton.innerText = 'Decode';
  55. decodeButton.title = 'Decode HTML entities';
  56. decodeButton.onclick = decodeAll;
  57.  
  58. // 设置按钮样式,使其位于目标按钮的右边
  59. decodeButton.style.marginLeft = '10px'; // 添加一些左边距
  60.  
  61. // 将按钮插入到目标按钮的右边
  62. targetButton.parentNode.insertBefore(decodeButton, targetButton);
  63. }
  64. });
  65. }
  66.  
  67. // 延迟1000毫秒后执行addDecodeButton函数
  68. setTimeout(addDecodeButton, 1000);
  69.  
  70. })();