2014-07-10 61 views
0

我想添加一個方法到一個模塊(認爲Web組件),檢測高度是否已經設置爲其根元素,如果沒有 - 基於其他計算高度因素。找出元素是否有聲明值

這個模塊有一些絕對定位和其他「花哨」的東西,所以正常流量是不可能的。

我想通過document.styleSheets循環和在各cssRule然後解析cssText或尋找「高度」的style對象內部的非空鍵的selectorText檢查根元素的id或一類。

有沒有更好的(或標準)方式來做到這一點?

PS - 我可能剛剛在解決問題的同時解決了問題,所以如果遇到同樣的問題 - 在這裏你去!

+0

您是否嘗試過defaultValue屬性? – Pikamander2

+0

defaultValue?什麼? – tripleZee

回答

0

這裏是一個相當粗糙的實現:

isHeightSet: function() { 
    var id = this.elements.root.id, 
     _isHeightSet = false; // the crude part ;-) 

    // go through stylesheets 
    _.each(document.styleSheets, function(styleSheet) { 

     // go through rules 
     _.each(styleSheet.cssRules, function(cssRule) { 

      // if selectorText contains our id 
      if (cssRule.selectorText && cssRule.selectorText.indexOf(id) !== -1) { 

       // check if the height is set 
       if (cssRule.style.height && 
        (cssRule.style.height !== 'auto' && 
        cssRule.style.height !== 'inherit')) { 

        // keep on hacking! 
        _isHeightSet = true; 
       } 
      } 
     }); 
    }); 

    return _isHeightSet; 
} 

大概可以更穩健,但似乎很好地工作。