为什么这在Confluence中不起作用:
AJS.$("body").attr("onload", AJS.$("body").attr("onload") + " myFunction()");
我想将自己的函数追加到body元素的onload属性,但是当我将此代码添加到Main Layout时,Confluence只是忽略它。当我使用Chrome调试器尝试此代码时,它运行正常。
编辑:我想我应该更清楚一点:上面的代码似乎在第一次加载Confluence页面时起作用。但是当页面进入编辑模式时,不会执行自定义脚本。
答案 0 :(得分:0)
嗯,这可能取决于很多事情。例如,当onload处理程序想要执行它时,myFunction是否已经可用。
但为什么不使用更标准的方法来实现这一目标:
AJS.$(document).ready(myFunction);
或者如果你真的想对加载事件作出反应
AJS.$(document).load(myFunction);
答案 1 :(得分:0)
基于与Atlassian开发人员的讨论,“在加载页面时执行函数的正确方法是:AJS。$(function($){... your code ...});”
这适用于初始页面加载,但是当页面进入编辑模式时,这不会被执行。几个console.log输出确认了这一点。
答案 2 :(得分:0)
作为一般规则,请等到整个页面加载完毕。在某些情况下,特别是当插件操作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}