需要使用body onload事件,但第三方JavaScript库劫持了它
我用明喻来画动态的时间线。我还使用了一个内部库来添加评论博客。我们的内部库使用body元素的onload事件进行初始化需要使用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="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; */