2012-07-23 8 views
5

एक div की scrollLeft प्रॉपर्टी अलग-अलग ब्राउज़रों में अलग-अलग मानों को वापस करने लगती है जब शरीर की दिशा आरटीएल होती है।jQuery.scrollLeft() जब दिशा आरटीएल है - विभिन्न ब्राउज़रों में अलग-अलग मान

एक उदाहरण यहाँ देखा जा सकता है - http://jsfiddle.net/auVLZ/2/

body { direction: rtl; } 
div.Container { border: 5px solid #F00; width: 500px; height: 400px; overflow: auto; }  
div.Content { background-color: #00F; width: 900px; height: 380px; }​ 

<div id="divContainer" class="Container"> 
    <div class="Content"></div> 
</div> 
<br /> 
<input id="showScrollLeft" type="button" value="Show ScrollLeft" />​ 

$(document).ready(function() 
{ 
    $("#showScrollLeft").click(function(e) 
    { 
     alert($("div.Container").scrollLeft()); 
    }); 
});​ 

क्रोम - प्रारंभिक मूल्य 400 है, और जब छोड़ दिया करने के लिए स्क्रॉलबार चलती यह 0.

है IE8 - 0 और 400.

फ़ायरफ़ॉक्स - 0 और -400।

इस अंतर का कारण क्या है और इसे कैसे प्रबंधित किया जा सकता है?

संपादित करें: ध्यान दें कि यह "नियमित" स्क्रॉल लाइफ के साथ भी हो रहा है - document.getElementById("divContainer").scrollLeft समान परिणाम देता है।

उत्तर

4

प्रयास करें हालांकि मुझे लगता है कि से बचने के लिए उम्मीद कर रहा था, मैं ब्राउज़र का पता लगाने का उपयोग कर समाप्त हो गया:

function GetScrollLeft(elem) 
{ 
    var scrollLeft = elem.scrollLeft(); 
    if ($("body").css("direction").toLowerCase() == "rtl") 
    { 
     // Absolute value - gets IE and FF to return the same values 
     var scrollLeft = Math.abs(scrollLeft); 

     // Get Chrome and Safari to return the same value as well 
     if ($.browser.webkit) 
     { 
      scrollLeft = elem[0].scrollWidth - elem[0].clientWidth - scrollLeft; 
     } 
    } 
    return scrollLeft; 
} 
+0

ब्राउज़र का पता लगाने अपने आप में एक बुरी बात नहीं है, आईई है। – jbkkd

+0

मैं इस मुद्दे से भी लड़ रहा हूं .... इस प्लंक को यह दिखाने के लिए बनाया गया है कि कैनरी फिक्स्ड स्क्रोल लेफ्ट, लेकिन scrollIntoView() http://plnkr.co/edit/UZvnlq?p=info – Jason

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