您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
kibana html decode
// ==UserScript== // @name kibana-html-decode // @namespace http://tampermonkey.net/ // @version 0.9 // @description kibana html decode // @author You // @include https://*monitor-*/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const filter = (list, filterFunction) => { const results = []; list.forEach(item=>{ if(filterFunction(item)){ results.push(item); } }) return results; } const decodeHTML = function (html) { var txt = document.createElement('textarea'); txt.innerHTML = html; return txt.value; }; const decodeHTMLForElements = (elements)=>{ elements.forEach(element=>{ element.innerHTML = decodeHTML(element.innerHTML); }); } const decode = () => { const messageElements = filter(document.querySelectorAll("dt"), (item)=> item.innerText.includes("message")) .map((item)=>{ return item.nextElementSibling; }); decodeHTMLForElements(filter(messageElements, (item)=>item!==null)); const messageDetailElements = document.querySelectorAll("[data-test-subj=tableDocViewRow-message-value]"); decodeHTMLForElements(messageDetailElements); const tableHeader=document.querySelectorAll("[data-test-subj=docTableHeader]>th"); let i=0; for(let j = 0; j < tableHeader.length; j++) { if (tableHeader[j].querySelector("[data-test-subj=docTableHeader-message]")){ i=j; } } const tableRow=document.querySelectorAll("[data-test-subj=docTableRow]"); tableRow.forEach(item=>{ //decodeHTMLForElements(item.querySelectorAll("td")[i].querySelectorAll("[ng-non-bindable]")); decodeHTMLForElements(item.querySelectorAll("td")[i].querySelectorAll("[class=truncate-by-height]")); }) } const handler = setInterval(()=>{ const querySubmitButton = document.querySelector("[data-test-subj=querySubmitButton]"); if(!querySubmitButton){ return; } //clearInterval(handler); if (querySubmitButton.parentElement.querySelector("#decode")){ return; } const decodeButton = document.querySelector("[data-test-subj=querySubmitButton]").cloneNode(); decodeButton.id = "decode"; decodeButton.innerText = "Decode"; decodeButton.onclick = decode; querySubmitButton.parentElement.appendChild(decodeButton); }, 1000); })();