2015-08-19 56 views
0

我試圖檢查幀「content1」和「content3」是否爲空,然後調整它們的大小。Javascript - 檢查幀是否爲空

但大小隻是改變每個循環

window.setInterval(function() { 
check(); 
}, 50); 

function check() { 

    var content1 = document.getElementsByName("content")[0].contentDocument.body; 
    var content3 = document.getElementsByName("content3")[0].contentDocument.body; 

    if (isEmpty(content3)) { 
     if (isEmpty(content1)) setProperties("0px, *, 0px"); 
     else setProperties("35%, *, 0px"); 
    } else setProperties("25%, 40%, 35%"); 

    window.localStorage.clear(); 
} 

function isEmpty(e) { 
    return (e.offsetWidth != 0); 
} 

function setProperties(value) { 
    document.getElementsByTagName("frameset")[1].cols = value; 
} 

https://jsfiddle.net/ecytve7w/8/

+0

[這裏是不記錄錯誤的jsfiddle的版本,因爲它會檢查所有的DOM調用的返回值。(https://jsfiddle.net/6vnna01u/) – Pointy

回答

2

嗯,這錯誤的意思,它說:enull,所以e.offsetWidth會拋出異常。只是檢查e也:

return !!(e && (e.offsetWidth != 0 || e.innerHTML != "\n")); 

!!使得它使得函數總是返回一個布爾truefalse的結果,這是沒有必要的,但我喜歡做與isFoo()功能只是對我好。

爲什麼e爲空?在這種情況下,這是因爲代碼沒有在頁面上找到「content」或「content3」元素。

+0

現在我得到「的ReferenceError:電子沒有定義「 –

+0

@ error404username_not_found你能否更新你的問題,並附上一個實際的小提琴的鏈接?這裏的代碼和鏈接的小提琴中的代碼是不同的。如果將'e'聲明爲參數,將其放在'isEmpty()'中,則不會出現該錯誤。 – Pointy