Bookmarklet更改Confluence展开宏的状态

时间:2014-02-13 00:30:36

标签: javascript css bookmarklet confluence

使用Chrome浏览器(从技术上讲,Iron),我希望有一个书签会覆盖expand macro中的Confluence(技术上是Atlassian Confluence 5.2.3),所以没有使用小书签后,这些部分会被折叠。

为什么呢?当我在Confluence中搜索扩展宏后面的关键字时,将在文章中的某个位置使用关键字在搜索结果中标识文章,但是当您导航到文章时,我找不到该文字。所以我在页面(ctrl + f)中为单词执行查找,但它没有出现。点击所有展开的宏链接后,再次尝试查找页面,我就能找到我的关键字。

由于我不是编码员,我已尽力而为......使用此处的代码: Javascript debut - from Chrome console to a bookmarklet并使用我写了以下内容:

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 = '';}})());

我相信扩展操作来自某个div上名为ajs-content-hover的类。我可能完全错了。为什么我认为这是班级: 我使用expand宏浏览了一个页面,使用了Browser Developer Tools(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,它们具有不同的ID,但具有相同的类和相同的样式。

我的第一个书签改变了整个页面的样式,这不是我想要的(导致空白页面)。所以我认为定位课程可能是合适的,但这也不起作用。

希望这是充分的解释,以证明问题,采取的步骤,动机(有时在SO上受到质疑)和期望的状态。我正在寻找一个可以让我找到工作书签的解释。

1 个答案:

答案 0 :(得分:2)

我通过利用Confluence附带的jQuery库解决了这个问题。 这允许您使用CSS选择器轻松地定位元素。

另外,如果您还没有这样做,请使用Chrome中的控制台或使用Firebug来测试您的代码。

使用标准扩展宏时,&#39;链接&#39; (实际上只是一个span)您单击以展开面板,有一个名为expand-control的类。

只需使用班级名称选择所有点击目标,然后拨打&#39;点击&#39;事件。所有关闭的面板将打开,所有打开的面板将关闭。

javascript:$('.expand-control').click();