修改confluence的body元素
Modify Confluence's body element
为什么在Confluence中不起作用:
AJS.$("body").attr("onload", AJS.$("body").attr("onload") + " myFunction()");
我想将我自己的函数附加到body元素的onload属性,但是当我将这段代码添加到Main Layout时,Confluence忽略了它。当我使用Chrome调试器尝试此代码时,它工作得很好。
编辑:我想我应该更清楚一点:上面的代码似乎工作时,汇流页面加载的第一次。但是当页面进入编辑模式时,不执行自定义脚本。
作为一般规则,等待直到整个页面加载完毕。在某些情况下,特别是当插件操纵DOM时,您可能不得不在脚本运行之前放置一到两秒的延迟。
使用JQuery:{html}
<script type="text/javascript">
AJS.$(document).ready(function() {
AJS.$("#comments-section").hide();
});
</script>
{html}
使用JavaScript: {html}
<script type="text/javascript">
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(function() {
var ele = document.getElementById("comments-section");
ele.style.display = "none";;
})
</script>
{html}
嗯,这可能取决于很多事情。例如,当onload处理程序想要执行myFunction时,它是否已经可用。
但是你为什么不用一种更标准的方式来实现呢?
AJS.$(document).ready(myFunction);
或者如果你真的想对加载事件做出反应
AJS.$(document).load(myFunction);
根据与Atlassian开发人员的讨论,"在加载页面时执行函数的正确方法是:AJS.$(function($){…你的代码…});"
这对于初始页面加载确实有效,但当页面进入编辑模式时,这不会被执行。
相关文章:
- jQuery body onChange具有多个元素和多个函数
- 为什么body元素上的onclick事件不起作用
- javascriptexecutor-不能点击body样式标记为“”的元素;溢出:隐藏;
- OnMouseMove on body标记导致子下拉元素出现问题
- jQuery多点击事件附加到Body元素(AJAX加载的内容)
- 如何从body标记中获取元素的索引
- 使用 JavaScript 访问 iframe 和 body Tag 中的元素
- 从 Blogger 中的 post.body 中删除/隐藏元素
- 使用 JavaScript 将 DOM 元素添加到 Body 的最佳方法
- Express API - 验证 req.body 元素
- 当绝对定位的元素位于浏览器窗口之外时扩展“body”
- 使用squishat并在body元素的末尾渲染外部minimiedjs
- scrollTop为javascript中的所有文档元素返回0,但滚动事件在body标记上触发
- 我如何知道DOM“body”元素何时可用
- 获取一个body类元素并将其转换为PHP变量
- 仅使用javascript获取站点的body元素
- 使用JavaScript执行程序时,将列表元素插入body标记中
- 在灯箱调用中选择iframe BODY元素
- 直接从body标签中删除没有被另一个父HTML元素包装的元素
- 在指令中获取body元素