首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改Confluence的body元素

修改Confluence的body元素
EN

Stack Overflow用户
提问于 2014-05-02 07:13:41
回答 3查看 821关注 0票数 1

为什么这不能在Confluence中工作:

代码语言:javascript
复制
AJS.$("body").attr("onload", AJS.$("body").attr("onload") + " myFunction()");

我想将我自己的函数附加到body元素的onload属性中,但是当我将此代码添加到主布局时,Confluence将忽略它。当我使用Chrome调试器尝试这段代码时,它工作得很好。

编辑:我想我应该说得更清楚一点:当第一次加载Confluence页面时,上面的代码似乎可以工作。但是,当页面进入编辑模式时,不会执行自定义脚本。

EN

回答 3

Stack Overflow用户

发布于 2014-05-07 09:29:01

作为一般规则,请等到整个页面加载完毕。在某些情况下,特别是当插件正在操作DOM时,您可能必须在脚本运行之前延迟一两秒。

使用JQuery:

代码语言:javascript
复制
{html}   
<script type="text/javascript"> 
AJS.$(document).ready(function() {
    AJS.$("#comments-section").hide();
});   
</script>
{html}  

使用JavaScript:

代码语言: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}
票数 1
EN

Stack Overflow用户

发布于 2014-05-02 08:30:13

好吧,这可能取决于很多事情。例如,当onload处理程序想要执行myFunction时,它是否已经可用。

但是你为什么不使用更标准的方法来实现这一点呢:

代码语言:javascript
复制
AJS.$(document).ready(myFunction);

或者如果您真的想对load事件做出反应

代码语言:javascript
复制
AJS.$(document).load(myFunction);
票数 0
EN

Stack Overflow用户

发布于 2014-05-03 00:44:51

根据与Atlassian开发人员的讨论,“在加载页面时执行函数的正确方法是: AJS.$( function ($){ ... your code ... });”

这确实适用于初始页面加载,但当页面进入编辑模式时,不会执行此操作。几个console.log输出证实了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23418261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档