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') {

「use strict」ステートメントがありません。

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

「===」が予期されていましたが、代わりに「==」が表示されました。

4 行目: for(r のそれぞれ) {

グローバル 'for' 変数を作成しています。「for (var each ...」である必要があります。

4 行目: for(r のそれぞれ) {

プロトタイプから不要なプロパティを除外するには、 for の本体を if ステートメントでラップする必要があります。

9 行目: } else if (typeof r == '関数') {

「===」が予期されていましたが、代わりに「==」が表示されました。

18行目: if (typeof call == '関数') {

「use strict」ステートメントがありません。

18行目: if (typeof call == '関数') {

「===」が予期されていましたが、代わりに「==」が表示されました。

27行目: if (typeof call == '関数') {

「use strict」ステートメントがありません。

27行目: if (typeof call == '関数') {

「===」が予期されていましたが、代わりに「==」が表示されました。

35行目: alert("Loaded?");

「use strict」ステートメントがありません。

39行目: alert("Resized?");

「use strict」ステートメントがありません。

43行目: if (!win_resizing) {

「use strict」ステートメントがありません。

45 行目: win_resizing を削除します。

変数は削除しないでください。

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

「use strict」ステートメントがありません。

35行目: alert("Loaded?");

「アラート」は定義されていません。

39行目: alert("Resized?");

「アラート」は定義されていません。

于 2013-08-25T14:31:21.267 に答える