窗口onresize和onload不会触发

时间:2013-08-25 14:16:54

标签: javascript triggers window

解决方案

解决方案:

我确实修改了它并添加了警报,以便在页面调整大小/加载时通知我,并确实调整了大小/加载。由于某种原因使用c函数时,它只是没有触发添加到.callbacks数组的自定义函数。我决定只使用另一个确实有效的代码。

而不是返回c(.callbacks);我改成了:

for(each in win_resize.callbacks) {
    win_resize.callbacks[each]();
    }

这似乎可以解决问题,现在它的工作原理非常好。 至于jsHint的事情......似乎有点奇怪“警报”没有定义,并且在评估变量是否等于字符串时处理......“字符串”,使用==将工作得很好。我从来没有碰到一个问题,因为它没有按照我的预期运作。

我不需要任何帮助,现在可以关闭它。 感谢所有帮助过的人,或者尝试提供帮助。

=============================================== ============

原始问题

Window.onload和Window.onresize没有触发。 我不确定这里发生了什么,因为我以前做了很多次 如果抛出某种错误会很容易解决,但据我在开发控制台中可以看出,没有错误。

这是我的代码:

var each, win_resizing, win_loaded = false;
function c(r, a1, a2, a3, a4, a5, a6, a7) {
    if (typeof r == 'object') {
        for(each in r) {
            each[r] = c(each[r], a1, a2, a3, a4, a5, a6, a7);
        }

        return r;
    } else if (typeof r == 'function') {
        return each[r](a1, a2, a3, a4, a5, a6, a7);
    }

    return r;
}

win_load.callbacks = [];
function win_load(call) {
    if (typeof call == 'function') {
        return win_load.callbacks.push(call)-1;
    }

    return c(win_load.callbacks);
}

win_resize.callbacks = [];
function win_resize(call) {
    if (typeof call == 'function') {
        return win_resize.callbacks.push(call)-1;
    }

    return c(win_resize.callbacks);
}

win_load(function() {
    alert("Loaded?");
});

win_resize(function() {
    alert("Resized?");
});

window.onresize = function() {
    if (!win_resizing) {
        win_resizing = setTimeout(function() {
            delete win_resizing;
        }, 50);

        win_resize();
    }
};

window.onload = function() {
    if (win_loaded!==true) {
        win_loaded = true;
        win_load();
        window.onresize();
    }
};

我复制了我制作的确切代码并将其放入jsFiddle

1 个答案:

答案 0 :(得分:0)

作为一个起点,我将您的代码放入JSHint并吐出这个错误列表:

  

第3行:if(typeof r =='object'){

     

缺少“使用严格”声明。

     

第3行:if(typeof r =='object'){

     

预期'==='而是看到'=='。

     

第4行:for(每个在r中){

     

创建全局'for'变量。应该是'for(var each ...'。

     

第4行:for(每个在r中){

     

for的主体应该包含在if语句中以进行过滤   原型中不需要的属性。

     

第9行:}否则if(typeof r =='function'){

     

预期'==='而是看到'=='。

     

第18行:if(typeof call =='function'){

     

缺少“使用严格”声明。

     

第18行:if(typeof call =='function'){

     

预期'==='而是看到'=='。

     

第27行:if(typeof call =='function'){

     

缺少“使用严格”声明。

     

第27行:if(typeof call =='function'){

     

预期'==='而是看到'=='。

     

第35行:警报(“已加载?”);

     

缺少“使用严格”声明。

     

第39行:警报(“已调整大小?”);

     

缺少“使用严格”声明。

     

第43行:if(!win_resizing){

     

缺少“使用严格”声明。

     

第45行:删除win_resizing;

     

不应删除变量。

     

第53行:if(win_loaded!== true){

     

缺少“使用严格”声明。

     

第35行:警报(“已加载?”);

     

'alert'未定义。

     

第39行:警报(“已调整大小?”);

     

'alert'未定义。