两个Javascript函数一个window.onload=Custom.init;和一个window.onload=function(){
我使用两个函数,一个来自此站点,它的函数调用如下:两个Javascript函数一个window.onload=Custom.init;和一个window.onload=function(){,javascript,function,Javascript,Function,我使用两个函数,一个来自此站点,它的函数调用如下: window.onload = Custom.init; 在那之后,我将使用另一个类似这样的函数调用 window.onload = function() {... 第二个正在杀死第一个! 如何对第二个函数进行修改或进行不同的调用,以便它们可以一起工作?您必须创建自己的函数,同时调用这两个函数 window.onload = function(){ Custom.init(); function() { ... } } 我
window.onload = Custom.init;
在那之后,我将使用另一个类似这样的函数调用
window.onload = function() {...
第二个正在杀死第一个!
如何对第二个函数进行修改或进行不同的调用,以便它们可以一起工作?您必须创建自己的函数,同时调用这两个函数
window.onload = function(){
Custom.init();
function() { ... }
}
我的偏好是:
loadFunctions = [];
window.onload = function() {var x; while(x = loadFunctions.shift()) x();};
然后,我不设置window.onload
,而是执行以下操作:
loadFunctions.push(function() {...});
当然,我可以这样做,因为我没有使用可能干扰window.onload
的外部库
编辑:如果您无法控制其中一个,可以执行以下操作:
var ool = window.onload;
window.onload = function() {
if( ool) ool();
// new code here
};
手动调用
Custom.init
window.onload = function() {
Custom.init();
//your stuff
};
为所有onLoad事件处理程序提供一个漂亮的小包装怎么样
window.onLoadHandlers = [];
window.onLoad = function() {
while (window.onLoadHandlers.length) {
window.onLoadHandlers.shift()();
}
};
然后将两个函数推送到该数组:
window.onLoadHandlers.push( Custom.init );
window.onLoadHandlers.push( function() { ...
您可以考虑使用jQuery或其他提供更好解决方案的其他库。
< P>使用AdvestTeListNe/AtjCug事件。您可以使用一个抽象的库,如jQuery:$(window).load(function () {
// run code
});
这可以使用不同的函数多次运行,不会出现问题。有点像,但它是可扩展的^ ^你当然不必这样做,
addEventListener
/attachEvent
更干净。@MatthewFlaschen我认为从那时起你就不必检测支持的版本并提供两个dif它的不同机制。虽然它可能更“合适”要做到这一点,这会更快、更简洁,因为您不必担心接口支持。这就是我推荐jQuery或其他库的原因。如果他说jQuery,那么jQuery的答案可能是合适的。但问题是具体如何在JavaScript中实现。加载库只是为了抽象addEventListener
/attachEvent
有点过分了……我认为使用addEventListener/attachEvent是一种方式……当然,IE使用一种命名法,而WebKit和FF使用另一种命名法,因此您必须同时考虑这两种命名法。库可以做到这一点,因此您不必担心这一点,但花额外的几分钟来考虑这两种命名法也不太糟糕。@t通力,我特别说过他可以做到这一点,我给出了底层的方法。很可能,他的代码的其他部分可以从库中受益(不必是jQuery)@tkone,当有很多具有不同功能的浏览器时,在没有jQuery或其他库的情况下使用javascript是疯狂的。Thanks@irfandar是吗?没有它我似乎可以完成很多事情。有些地方可以加载它(例如bookmarklets)如果你不知道它在幕后为你做了什么,你就有点错过了重点。这一个有帮助,但当把第二个放在第一位时,像这样window.onload=function(){somefunction.init();Custom.init();};
$(window).load(function () {
// run code
});