2013-08-25 103 views
0

解決方案窗口onResize,並ONLOAD不觸發

解決方案:

我做了修改,並添加警報,通知我,當網頁被調整/加載,他們的確調整/負載。由於某些原因,使用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

+0

我不認爲'窗口調整大小'將在jsFiddle上工作,因爲每個部分都在它自己的iframe中。 – DevlshOne

+0

是的,我意識到這一點。這就是爲什麼有源代碼;但在我的任何瀏覽器期間它都不適用於我。這是問題。如果jsFiddle沒有處理iframe的onresize事件,我無所謂。 – Will

+0

第一個建議...去除除onload和resize兩個監聽器以外的所有代碼。看看警報是否有效。 – DevlshOne

回答

0

只是作爲一個起點,我把你的代碼放到JSHint它吐出錯誤此列表:

3號線:如果(typeof運算[R == '對象'){

失蹤「嚴格使用」聲明。

第3行:如果(typeof運算ř== '對象'){

預期 '===',而是看見 '=='。

4行:(每個R){

'爲' 可變創建全局。應該是「對(VAR每個......」

4號線:爲(各R){

的在體內應該被包裹在一個if語句來過濾來自 不必要的性能原型。

線路9:}否則,如果(typeof運算[R == '功能'){

預計 '===',而是看到 '=='。

第18行:如果(typeof運算調用== '功能'){

缺少 「使用嚴格」 的聲明。

第18行:如果(typeof運算調用== '功能'){

預計 '===',而是看到 '=='。

第27行:如果(typeof運算調用== '功能'){

缺少 「使用嚴格」 的聲明。

第27行:如果(typeof運算調用== '功能'){

預計 '===',而是看到 '=='。

35行:alert(「Loaded?」);

缺少「嚴格使用」聲明。

第39行:alert(「Resized?」);

缺少「嚴格使用」聲明。

第43行:如果(!win_resizing){

缺少 「使用嚴格」 的聲明。

第45行:刪除win_resizing;

不應刪除變量。

線53:如果(!win_loaded ==真){

缺少 「使用嚴格」 的聲明。

35行:alert(「Loaded?」);

'alert'未定義。

第39行:alert(「Resized?」);

'alert'未定義。