grafana-html-decode

grafana html decode

当前为 2025-03-31 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name grafana-html-decode
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.3
  5. // @description grafana html decode
  6. // @author chong
  7. // @include *://*.otr-devops.cn.svc.corpintra.net/*
  8. // @include *://*.mercedes-benz.*/grafana/*
  9. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  10. // @grant none
  11. // @license MIT
  12. // ==/UserScript==
  13. (function() {
  14. 'use strict';
  15.  
  16. // HTML解码函数
  17. function decodeHTML(html) {
  18. var txt = document.createElement('textarea');
  19. txt.innerHTML = html;
  20. return txt.value;
  21. }
  22.  
  23. // 解码指定元素的内容
  24. function decodeHTMLForElements(elements) {
  25. elements.forEach(element => {
  26. element.innerHTML = decodeHTML(element.innerHTML);
  27. });
  28. }
  29.  
  30. // 主解码逻辑
  31. function decodeAll() {
  32.  
  33. // 解码所有具有特定类名的元素
  34. const messageElements = document.querySelectorAll('.css-uev0p3-logs-row__message');
  35. decodeHTMLForElements(messageElements);
  36.  
  37. // 解码所有表格单元格内容
  38. const tableCells = document.querySelectorAll('.css-1lm1wit-wordBreakAll-wrapLine');
  39. decodeHTMLForElements(tableCells);
  40.  
  41. console.log('解码完成!');
  42. }
  43.  
  44. // 动态添加解码按钮
  45. function addDecodeButton() {
  46. // 选择所有符合条件的 <button> 元素
  47. const targetButton = document.querySelector('.button-group.css-8qah51.refresh-picker');
  48.  
  49. // 检查是否已经添加过按钮
  50. if (!targetButton.nextElementSibling || !targetButton.nextElementSibling.classList.contains('custom-decode-button')) {
  51. // 创建新的按钮
  52. const decodeButton = document.createElement('button');
  53.  
  54. decodeButton.className = 'custom-decode-button css-rf9bj2-toolbar-button ';
  55. decodeButton.innerText = 'Decode';
  56. decodeButton.title = 'Decode HTML entities';
  57. decodeButton.onclick = decodeAll;
  58.  
  59. // 设置按钮的其他样式
  60. decodeButton.style.marginLeft = '3px';
  61. decodeButton.style.textAlign = 'center';
  62. decodeButton.style.width = '96px';
  63.  
  64.  
  65.  
  66. // 将按钮插入到目标按钮的右边
  67. targetButton.parentElement.appendChild(decodeButton);
  68.  
  69. }
  70.  
  71. }
  72.  
  73. // 延迟1000毫秒后执行addDecodeButton函数
  74. setTimeout(addDecodeButton, 1000);
  75.  
  76. const handler = setInterval(()=>{
  77. addDecodeButton();
  78. }, 5000);
  79.  
  80. })();