2013-03-18 10 views
7

मैं विंडो आकार से शीर्षलेख और पाद लेख मानों को घटाकर और दस्तावेज़ लोड पर इस मान को सामग्री सेट करके वेबपृष्ठ सामग्री की गति को गतिशील रूप से सेट करने का प्रयास कर रहा हूं।jQuery outerHeight सही मान वापस नहीं कर रहा है

तत्व ऊंचाई को पकड़ने के लिए प्रत्येक कार्य पैरामीटर तत्व आईडी में ले जाता है; सामग्री पैरामीटर को छोड़कर।

function setH(header, content, footer) 
{ 
    winH = top.innerHeight; 
    winTitle = 32; // height value of the window title (part of the header) 
    headH = $(header).outerHeight(true); 
    footH = $(footer).outerHeight(true); 
    contentH = winH - winTitle - headH - footH; 
    $(content).css({'height' : (contentH) + 'px','overflow-y' : 'scroll'}); 
} 

जो मुद्दा मैं चला रहा हूं वह है बाहरी हाइट मान गलत मान वापस कर रहे हैं। हेडर 23px और पाद लेख 40px देता है।

एफएफ और क्रोम में तत्वों की जांच करते समय मान 25px और 44px होते हैं।

मैंने आंतरिक हाइट का उपयोग करने की कोशिश की है, बाहरी हाइट और बाहरी हाइट (सत्य) लेकिन सही मान नहीं मिल रहा है।

क्या गलत हो सकता है पर कोई सुझाव? या गतिशील रूप से सामग्री की ऊंचाई निर्धारित करने का एक वैकल्पिक तरीका? मैं खींचने के लिए बालों से बाहर भाग रहा हूं इसलिए किसी भी मदद की सराहना की जा रही है।

संपादित करें: मैं iframes में सामग्री के साथ काम कर रहा हूं। निम्नलिखित: winH = top.innerHeight शीर्ष आईफ़्रेम विंडो की ऊंचाई मान प्राप्त कर रहा है।

+0

'शीर्ष' क्या है? यह क्या पकड़ता है? कृपया अपना लेआउट भी दिखाएं। – Starx

+0

मेरे पास कस्टम विंडो हैं जो iframes में पॉप अप करती हैं; शीर्ष शीर्ष आईफ्रेम ऊंचाई को पकड़ रहा है। –

उत्तर

1

मैंने एक स्क्रिप्ट को संशोधित किया है जिसका उपयोग मैं स्क्रीनविड्थ/ऊंचाई की गणना के लिए करता हूं। अगर यह काम करता है देखें: जो मदद की मुझे कोड है कि $(window).load() में outerHeight() और नहीं $(document).ready() की जाँच करता है डाल करने के लिए प्रयास करने के लिए है

if (typeof window.innerWidth != 'undefined') { 
     viewportwidth = window.innerWidth; 
     viewportheight = window.innerHeight; 
     winTitle = 32; 
     headH = $(header).outerHeight(true); 
     footH = $(footer).outerHeight(true); 
     contentH = viewportheight - winTitle - headH - footH; 
    } 

    // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) 

    else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) { 
     viewportwidth = document.documentElement.clientWidth; 
     viewportheight = document.documentElement.clientHeight; 
     winTitle = 32; 
     headH = $(header).outerHeight(true); 
     footH = $(footer).outerHeight(true); 
     contentH = viewportheight - winTitle - headH - footH; 
    } 

    // older versions of IE 

    else { 

    viewportwidth = document.getElementsByTagName('body')[0].clientWidth; 
    viewportheight = document.getElementsByTagName('body')[0].clientHeight; 
    } 
    document.getElementById("content id").style.height = contentH + "px"; 
+0

मैंने अपनी स्क्रिप्ट को अपने वर्तमान कोड के साथ काम करने के लिए संशोधित किया है लेकिन यह लौटने वाले मान मेरे मूल कोड से समान हैं। –

+0

शीर्षलेख और पाद लेख गतिशील हैं? यदि नहीं, तो आप अपनी ऊंचाई की पिक्सेल की मात्रा के साथ .outerHeight (सत्य) को प्रतिस्थापित कर सकते हैं। – Jefferson

+0

यह मेरा वर्तमान काम है लेकिन मुझे कोड जितना संभव हो उतना गतिशील होना चाहिए। इसलिए मुझे मूल्य प्राप्त करने में सक्षम होना चाहिए। –

15

एक बात। जाहिर है कि कई मामलों में $(document.ready() का उपयोग करना ठीक है, लेकिन कभी-कभी outerHeight() का गलत मान तत्वों से पूरी तरह लोड नहीं होता है।

+1

एक चीज़ जो मुझे जोड़नी चाहिए, '(विंडो) .load() 'पृष्ठ पर सभी तत्वों को लोड करने के बाद कहा जाता है, जिसमें छवियां शामिल हैं। – Gavin

संबंधित मुद्दे