Букмарклет для изменения состояния 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