Bookmarklet за промяна на състоянието на Confluence Expand Macro

Използвайки браузъра Chrome (технически, Iron), искам да имам отметка, която ще замени макроса за разгъване в Confluence (технически Atlassian Confluence 5.2.3), така че никой от разделите да не се свива след използване на отметката.

Защо? Когато търся в Confluence ключова дума, която стои зад макроса за разширяване, статия ще бъде идентифицирана в резултатите от търсенето с ключовата дума някъде в статията, но когато отидете до статията, не мога да намеря думата. Така че извършвам търсене в страница (ctrl+f) за думата и тя не се появява. След като щракна върху всички макро връзки за разгъване и опитам отново да намеря в страницата, мога да намеря ключовата си дума.

Тъй като не съм програмист, направих всичко по силите си... използвайки кода, намерен тук: Дебют на Javascript - от конзолата на Chrome до отметка и използвайки Написах следното:

javascript:void((function(){function getElementsByClassName(classname, node){if(!node) node = document.getElementsByTagName("body")[0]; var a = [];var re = new RegExp('\\b' + classname + '\\b'); var els = node.getElementsByTagName("*");for(var i=0,j=els.length; i<j; i++)if(re.test(els[i].className))a.push(els[i]);return a;};var elems = getElementsByClassName('ajs-content-hover');for (var i=0;i<elems.length;i+=1){elems[i].style.display = '';}})());

Вярвам, че действието за разширяване идва от клас, наречен ajs-content-hover, на определени div. Може да греша напълно за това. Защо смятам, че това е класът: Прегледах страница с помощта на макроса за разгъване, използвах инструментите за разработчици на браузъра (ctrl-shift-I), отидох в раздела с елементи, щракнах върху връзка, за която знам, че използва макроса за разгъване - това беше в момента не е разширен (това е поведението по подразбиране) и идентифицира следния html: <div id="content-hover-1" class="ajs-content-hover" style="display: none;"><div class="contents" style="width: 300px;"></div></div>. Намерих множество div от този тип, с различни идентификатори, но един и същи клас и същия стил.

Първият ми отметка промени стила на цялата страница, което не е това, което исках (резултира в празна страница). Така че реших, че насочването към класа може да е подходящо, но и това не работи.

Надяваме се, че това е достатъчно обяснение, за да демонстрира проблема, предприетите стъпки, мотива (понякога разпитван на SO) и желаното състояние. Търся обяснение, което може да ме отведе до работещ отметка.


person Bewc    schedule 13.02.2014    source източник


Отговори (1)


Реших това, като се възползвах от библиотеката jQuery, която се доставя заедно с Confluence. Това ви позволява лесно да насочвате елементи с помощта на CSS селектори.

Освен това, ако още не сте го направили, използвайте конзолата в Chrome или използвайте Firebug, за да тествате кода си.

Когато използвате стандартния макрос за разширяване, „връзката“ (всъщност само span), върху която щракнете, за да разгънете панела, има клас, наречен expand-control.

Просто изберете всички цели за кликване, като използвате името на класа, след което извикайте събитието „щракване“. Всички затворени панели ще бъдат отворени и всички отворени панели ще бъдат затворени.

javascript:$('.expand-control').click();
person Serge Melis    schedule 24.04.2014
comment
Благодаря ти! Работи в Iron/Chrome/IE, според нуждите! - person Bewc; 25.04.2014
comment
Случайно попаднах на тази страница точно след като създадох подобна отметка, но я бях направил така, че да не превключва всички състояния, а винаги да разширява само тези, които са свити: javascript:void(function () { jQuery('.expand-control > .icon:not(".expanded")') .parent() .click(); }()). Дано помогне. - person haylem; 02.05.2016
comment
Предлага се и като просто разширение за Chrome: инсталиране от уеб магазин / вижте източника - person haylem; 03.05.2016