Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个Javascript函数一个window.onload=Custom.init;和一个window.onload=function(){_Javascript_Function - Fatal编程技术网

两个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
});