0

解决方案

解决方案:

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

而不是 return 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中。

4

1 回答 1

0

作为一个起点,我将您的代码放入JSHint中,它会输出以下错误列表:

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

缺少“使用严格”声明。

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

预期为“===”,而是看到了“==”。

第 4 行:for(each in r) {

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

第 4 行:for(each in r) {

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

第 9 行:} else 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 行:警报(“加载?”);

“警报”未定义。

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

“警报”未定义。

于 2013-08-25T14:31:21.267 回答