diff --git a/renametab_in_zyphyr_player.js b/renametab_in_zyphyr_player.js new file mode 100644 index 0000000..1669468 --- /dev/null +++ b/renametab_in_zyphyr_player.js @@ -0,0 +1,65 @@ +// ==UserScript== +// @name TabName_in_ZephyrPlayer +// @namespace Violentmonkey Scripts +// @match https://jira.slife.fun/secure/Tests.jspa* +// @grant none +// @version 1.0 +// @author - +// @description 17.09.2025, 17:12:31 +// ==/UserScript== + +// Ожидание элемента -- искомый элемент находится в h2.title +function waitForElm(selector) { + return new Promise(resolve => { + if (document.querySelector(selector)) { + return resolve(document.querySelector(selector)); + } + + const observer = new MutationObserver(mutations => { + if (document.querySelector(selector)) { + observer.disconnect(); + resolve(document.querySelector(selector)); + } + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + }); +} + +// ждём и немного логируем +waitForElm("h2").then((elm) => { + console.log("Element is ready"); + console.log(elm.title); +}, 1000); + +// Включаем наблюдателя по доке MutationObserver +var mutationObserver = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + + // Получилась какая-то шляпа. Но иначе я не смог + if (mutation.type === 'attributes') { + const element = mutation.target; + const attributeName = mutation.attributeName; + const oldValue = mutation.oldValue; + const newValue = element.getAttribute(attributeName); + + if (attributeName === 'title' && element.tagName === 'H2' ) { + document.title = newValue + } + + } + }); +}); + +// Наблюдаем за различными параметрами. Пытался определить какой именно нужный, чтобы меньше отслижвать - всё ломалось, поэтому отслеживаю всё. +mutationObserver.observe(document.documentElement, { + attributes: true, + characterData: true, + childList: true, + subtree: true, + attributeOldValue: true, + characterDataOldValue: true +});