需要使用body onload事件,但第三方JavaScript库劫持了它

需要使用body onload事件,但第三方JavaScript库劫持了它,javascript,javascript-events,simile,Javascript,Javascript Events,Simile,我用明喻来画动态的时间线。我还使用了一个内部库来添加评论博客。我们的内部库使用body元素的onload事件进行初始化 <body onload="initComments('myID')"> 但明喻似乎出于自己的目的劫持了onload,因此initComments('myID')永远不会执行 除了更改明喻代码外,我如何让我的初始值设定项运行 我不希望仅仅为了解决这个问题而添加另一个库(即jQuery)。使用jQuery的$(document).ready事件,它允许您添加任意

我用明喻来画动态的时间线。我还使用了一个内部库来添加评论博客。我们的内部库使用body元素的onload事件进行初始化

<body onload="initComments('myID')">

但明喻似乎出于自己的目的劫持了onload,因此initComments('myID')永远不会执行

除了更改明喻代码外,我如何让我的初始值设定项运行


我不希望仅仅为了解决这个问题而添加另一个库(即jQuery)。

使用jQuery的
$(document).ready
事件,它允许您添加任意数量的处理程序(不同于
onload
)。

使用jQuery的
$(document).ready
事件,它允许您添加任意数量的处理程序(不像
onload
)。

除了前面提到的jQuery解决方案(我强烈建议使用它,它很棒)这里是简单的JS解决方案(因为您在问题中没有提到任何关于jQuery的内容):


除了前面提到的jQuery解决方案(我强烈建议使用它,这很好)之外,下面是一个普通的JS解决方案(因为您在问题中没有提到任何关于jQuery的内容):

外接程序jQuery和use

$(document).ready(function(){
  // Your code here...
});
在jQuery中还有其他几种编写方法,但我发现这是最具解释性的

如果您正在进行任何类型的JavaScript开发,您需要查看jQuery。它非常棒!

添加jQuery并使用

$(document).ready(function(){
  // Your code here...
});
在jQuery中还有其他几种编写方法,但我发现这是最具解释性的


如果您正在进行任何类型的JavaScript开发,您需要了解jQuery。它非常棒!

首先,一般来说,您不希望将JavaScript作为标记属性嵌入HTML中

其次,Simile可能会覆盖
onload
(使用与您相同的方式)。因此,您需要在包含Simile后添加onload事件

使用jQuery:

<script src="/js/blah/simile.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        initComments('myID');
    });
</script>

$(文档).ready(函数(){
initComments('myID');
});
未使用库(找到):


函数addOnloadEvent(fnc){
如果(window.addEventListener){
window.addEventListener(“加载”,fnc,false);
}else if(window.attachEvent){
窗户附件(“空载”,fnc);
}
否则{
var oldOnload=window.onload | | function(){};
window.onload=函数(e){
旧荷载(e);
窗口[fnc](e);
};
}
}
addOnloadEvent(函数(){initComments('myID');});

首先,一般来说,不要将JavaScript作为标记属性嵌入HTML中

其次,Simile可能会覆盖
onload
(使用与您相同的方式)。因此,您需要在包含Simile后添加onload事件

使用jQuery:

<script src="/js/blah/simile.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        initComments('myID');
    });
</script>

$(文档).ready(函数(){
initComments('myID');
});
未使用库(找到):


函数addOnloadEvent(fnc){
如果(window.addEventListener){
window.addEventListener(“加载”,fnc,false);
}else if(window.attachEvent){
窗户附件(“空载”,fnc);
}
否则{
var oldOnload=window.onload | | function(){};
window.onload=函数(e){
旧荷载(e);
窗口[fnc](e);
};
}
}
addOnloadEvent(函数(){initComments('myID');});

被劫持,你的意思是,明喻在你的代码之后加载并覆盖
onload
?在这种情况下,确保你在它后面(作为Justin),在你自己覆盖它之前,将
onload
的值存储在某个地方,这样它仍然会被调用(从你自己的处理程序)


也就是说,如果你不使用jQuery。

被劫持,你的意思是,明喻在你的代码后加载并覆盖
onload
?在这种情况下,确保你支持它(作为Justin),在你自己覆盖它之前,将
onload
的值存储在某个地方,这样它仍然会被调用(从你自己的处理程序)


也就是说,如果你不使用jQuery。

如果你看这里,你会看到一个解决方案,我相信它就是jQuery使用的,或者是对它的修改,但它应该适合你的需要

//迪安·爱德华兹/马蒂亚斯·米勒/约翰·雷斯格
函数init(){
//如果已调用此函数,请退出
if(arguments.callee.done)返回;
//标记这个函数,这样我们就不会做同样的事情两次
arguments.callee.done=true;
//停止计时
如果(_定时器)清除间隔(_定时器);
//做事
};
/*用于Mozilla/Opera9*/
if(文件增补列表器){
document.addEventListener(“DOMContentLoaded”,init,false);
}
/*用于Internet Explorer*/
/*@抄送@*/
/*@如果(@_win32)
文件。填写(“”);
var script=document.getElementById(“\uu ie\u onload”);
script.onreadystatechange=函数(){
如果(this.readyState==“完成”){
init();//调用onload处理程序
}
};
/*@结束@*/
/*狩猎旅行*/
if(/WebKit/i.test(navigator.userAgent)){//sniff
var_timer=setInterval(函数(){
如果(/loaded | complete/.test(document.readyState)){
init();//调用onload处理程序
}
}, 10);
}
/*对于其他浏览器*/
/*window.onload=init*/

你会看到最后一行被注释掉了。如果它被注释掉了,要么你会删除它们(取消注释),要么你的代码不会运行,但这对主要浏览器来说是可行的。

如果你看这里,你会看到一个解决方案,我相信它就是jQuery使用的,或者是对它的修改,但它应该适合你的需要

//迪安·爱德华兹/马蒂亚斯·米勒/约翰·雷斯格
函数init(){
//如果已调用此函数,请退出
if(arguments.callee.done)返回;
//标记这个函数,这样我们就不会做同样的事情两次
arguments.callee.done=true;
//停止计时
如果(_定时器)清除间隔(_定时器);
//做事
};
/*
// Dean Edwards/Matthias Miller/John Resig

function init() {
  // quit if this function has already been called
  if (arguments.callee.done) return;

  // flag this function so we don't do the same thing twice
  arguments.callee.done = true;

  // kill the timer
  if (_timer) clearInterval(_timer);

  // do stuff
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", init, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
  document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
  var script = document.getElementById("__ie_onload");
  script.onreadystatechange = function() {
    if (this.readyState == "complete") {
      init(); // call the onload handler
    }
  };
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
  var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
      init(); // call the onload handler
    }
  }, 10);
}

/* for other browsers */
/*window.onload = init; */