दिलचस्प पोस्ट
रिएक्टजेएस में तीन बिंदुओं का क्या अर्थ है JsonP को डेटा पोस्ट करें "एंड्रॉइड" पैकेज में विशेषता 'शोएएसएक्शन' के लिए कोई संसाधन पहचानकर्ता नहीं मिला मैं एक बोली स्क्रिप्ट में संख्या कैसे जोड़ सकता हूँ जैक्सन का इस्तेमाल करते हुए जेएस तिथि को कैसे हटाना है? dict.fromkeys सभी बिंदु एक ही सूची में एकाधिक मार्कर Google मानचित्र एपीआई v3 पते के सरणी से और OVER_QUERY_LIMIT से बचें जबकि पेजलोड पर जीओकोडिंग mySQL प्रत्येक श्रेणी के शीर्ष 5 लौट रहा है स्थानीय कंप्यूटर का आईपी पता प्राप्त करें बूटस्ट्रैप 3 के साथ लंबवत-संरेखित करें मैं MySQL का समय क्षेत्र कैसे सेट करूं? सीएसएस का इस्तेमाल करते हुए एक तत्व से पहले लाइन ब्रेक कैसे सम्मिलित करें विम में क्लिपबोर्ड की प्रतिलिपि कैसे करें? निर्माण का निर्माण क्या होता है? पायथन: (समान) तारों के एक सेट से उपसर्ग निर्धारित करें

jQuery स्क्रोलपॉप () सफारी या क्रोम में काम नहीं करता (विंडोज़)

मुझे एक "सहायता" शैली विंडो को लोड करने और पृष्ठ पर किसी विशेष बिंदु पर स्क्रॉल करने की अनुमति देने के लिए एक सरल सेटअप मिल गया है। अधिक या कम कोड इस तरह दिखता है:

var target = /* code */; target.offsetParent().scrollTop(target.offset().top - fudgeValue); 

स्क्रॉल और फूग मान का लक्ष्य पेज पर दिए गए कुछ संकेतों से निर्धारित होता है, और मुझे इस तंत्र के उस हिस्से में कहीं भी कोई समस्या नहीं है। फ़ायरफ़ॉक्स और आईई 8 में, उपरोक्त कोड बिल्कुल वैसे ही काम करता है जैसे मैं चाहता हूं: स्क्रॉल किए गए बॉक्स (इस मामले में, पृष्ठ बॉडी) सही ढंग से उस सामग्री को स्क्रॉल करता है जब खिड़की में ऐसा करने के लिए कहा जाता है।

क्रोम और सफारी में, हालांकि, कॉल टू स्क्रोल () जाहिरा तौर पर कुछ नहीं करता है सभी संख्याएं ठीक हैं, और लक्ष्य सही बात को संदर्भित करता है (और offsetParent () वास्तव में शरीर तत्व है), लेकिन कुछ भी नहीं होता है। जहाँ तक मैं चारों ओर googling से बता सकता हूँ, यह काम करने के लिए माना जाता है सफारी और क्रोम के तहत रेंडरर के बारे में कुछ अजीब बात है?

यह jQuery 1.3.2 है यदि यह मायने रखता है।

टेस्ट पेज: http://gutfullofbeer.net/scrolltop.html

वेब के समाधान से एकत्रित समाधान "jQuery स्क्रोलपॉप () सफारी या क्रोम में काम नहीं करता (विंडोज़)"

हाँ, क्रोम में एक बग प्रतीत होता है जब यह body को संशोधित करने की बात आती है, इसे offsetParent में बनाने की कोशिश कर रहा है काम के आसपास के रूप में, मेरा सुझाव है कि आप #content div को लपेटने के लिए एक और डिवा जोड़ें, और उस पुस्तक को बनाएं:

 html, body { height: 100%; padding: 0; } html { width: 100%; background-color: #222; overflow: hidden; margin: 0; } body { width: 40em; margin: 0px auto; /* narrow center column layout */ background-color: white; position: relative; /* allow positioning children relative to this element */ } #scrollContainer /* wraps #content, scrolls */ { overflow: auto; /* scroll! */ position:absolute; /* make offsetParent */ top: 0; height: 100%; width: 100%; /* fill parent */ } #header { position: absolute; top: 0px; height: 50px; width: 38.5em; background-color: white; z-index: 1; /* sit above #content in final layout */ } #content { padding: 5px 14px 50px 5px; } 

एफएफ 3.5.5 में परीक्षण, क्रोम, IE8

लाइव प्रदर्शन:

 $(function() { $('#header').find('button').click(function(ev) { var button = $(this), target = $('div.' + button.attr('class')); var scroll = target.offsetParent().scrollTop(); target.offsetParent().scrollTop(target.offset().top + scroll - 50); }); }); 
 html, body { height: 100%; padding: 0; } html { width: 100%; background-color: #222; overflow: hidden; margin: 0; } body { width: 40em; margin: 0px auto; background-color: white; position: relative; } #scrollContainer { overflow: auto; position:absolute; top: 0; height: 100%; width: 100%; } #header { position: absolute; top: 0px; height: 50px; width: 38.5em; background-color: white; z-index: 1; } #content { padding: 5px 14px 50px 5px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div id='header'> Header Box <button class='A'>A</button> <button class='B'>B</button> <button class='C'>C</button> </div> <div id='scrollContainer'> <div id='content'> <div style='height: 50px'> </div> <div class='A'> <h1>A</h1> <p>My name is Boffer Bings. I was born of honest parents in one of the humbler walks of life, my father being a manufacturer of dog-oil and my mother having a small studio in the shadow of the village church, where she disposed of unwelcome babes. In my boyhood I was trained to habits of industry; I not only assisted my father in procuring dogs for his vats, but was frequently employed by my mother to carry away the debris of her work in the studio. In performance of this duty I sometimes had need of all my natural intelligence for all the law officers of the vicinity were opposed to my mother's business. They were not elected on an opposition ticket, and the matter had never been made a political issue; it just happened so. My father's business of making dog-oil was, naturally, less unpopular, though the owners of missing dogs sometimes regarded him with suspicion, which was reflected, to some extent, upon me. My father had, as silent partners, all the physicians of the town, who seldom wrote a prescription which did not contain what they were pleased to designate as _Ol. can._ It is really the most valuable medicine ever discovered. But most persons are unwilling to make personal sacrifices for the afflicted, and it was evident that many of the fattest dogs in town had been forbidden to play with me--a fact which pained my young sensibilities, and at one time came near driving me to become a pirate. </div> <div class='B'> <h1>B</h1> <p> Looking back upon those days, I cannot but regret, at times, that by indirectly bringing my beloved parents to their death I was the author of misfortunes profoundly affecting my future. <p> One evening while passing my father's oil factory with the body of a foundling from my mother's studio I saw a constable who seemed to be closely watching my movements. Young as I was, I had learned that a constable's acts, of whatever apparent character, are prompted by the most reprehensible motives, and I avoided him by dodging into the oilery by a side door which happened to stand ajar. I locked it at once and was alone with my dead. My father had retired for the night. The only light in the place came from the furnace, which glowed a deep, rich crimson under one of the vats, casting ruddy reflections on the walls. Within the cauldron the oil still rolled in indolent ebullition, occasionally pushing to the surface a piece of dog. Seating myself to wait for the constable to go away, I held the naked body of the foundling in my lap and tenderly stroked its short, silken hair. Ah, how beautiful it was! Even at that early age I was passionately fond of children, and as I looked upon this cherub I could almost find it in my heart to wish that the small, red wound upon its breast--the work of my dear mother--had not been mortal. </div> <div class='C'> <h1>C</h1> <p>It had been my custom to throw the babes into the river which nature had thoughtfully provided for the purpose, but that night I did not dare to leave the oilery for fear of the constable. "After all," I said to myself, "it cannot greatly matter if I put it into this cauldron. My father will never know the bones from those of a puppy, and the few deaths which may result from administering another kind of oil for the incomparable _ol. can._ are not important in a population which increases so rapidly." In short, I took the first step in crime and brought myself untold sorrow by casting the babe into the cauldron. </div> <div style='height: 75em;'> </div> </div> </div> 

मुझे सफारी और क्रोम (मैक) में यह समस्या हो रही थी और पता चला कि .scrollTop $("body") पर काम करेगा, लेकिन $("html, body") , एफएफ और आईई नहीं बल्कि अन्य तरह से दौर का काम करता है। एक सरल ब्राउज़र का पता इस समस्या को हल करता है:

 if($.browser.safari) bodyelem = $("body") else bodyelem = $("html,body") bodyelem.scrollTop(100) 

क्रोम के लिए jQuery के ब्राउज़र वैल्यू सफारी है, इसलिए आपको उस पर पता लगाने की जरूरत है

उम्मीद है कि यह किसी को मदद करता है


यह क्रोम 7, आईई 6, आईई 7, आईई 8, आईई 9, एफएफ 3.6 और सफारी 5 के लिए काम करता है।

2012 अपडेट करें
यह अभी भी अच्छा है, लेकिन मुझे इसका पुन: उपयोग करना पड़ा। कभी-कभी position काम नहीं करती है इसलिए यह एक विकल्प है:


ब्राउज़र समर्थन स्थिति यह है:

IE8, फ़ायरफ़ॉक्स, ओपेरा: $("html")

क्रोम, सफारी: $("body")

तो यह काम करता है:

 bodyelem = $.browser.safari ? $("body") : $("html") ; bodyelem.animate( {scrollTop: 0}, 500 ); 

पुस्तक के लिए: 'एचटीएमएल' या 'सेटर के लिए बॉडी' (ब्राउज़र पर निर्भर है) … प्राप्तकर्ता के लिए 'विंडो'

परीक्षण के लिए एक जेएसएफडियल यहां है: http://jsfiddle.net/molokoloco/uCrLa/

 var $window = $(window), // Set in cache, intensive use ! $document = $(document), $body = $('body'), scrollElement = 'html, body', $scrollElement = $(); var isAnimated = false; // Find scrollElement // Inspired by http://www.zachstronaut.com/posts/2009/01/18/jquery-smooth-scroll-bugs.html $(scrollElement).each(function(i) { // 'html, body' for setter... window for getter... var initScrollTop = parseInt($(this).scrollTop(), 10); $(this).scrollTop(initScrollTop + 1); if ($window.scrollTop() == initScrollTop + 1) { scrollElement = this.nodeName.toLowerCase(); // html OR body return false; // Break } }); $scrollElement = $(scrollElement); // UTILITIES... var getHash = function() { return window.location.hash || ''; }, setHash = function(hash) { if (hash && getHash() != hash) window.location.hash = hash; }, getWinWidth = function() { return $window.width(); }, // iphone ? ((window.innerWidth && window.innerWidth > 0) ? window.innerWidth : $window.width()); getWinHeight = function() { return $window.height(); }, // iphone ? ((window.innerHeight && window.innerHeight > 0) ? window.innerHeight : $window.height()); getPageWidth = function() { return $document.width(); }, getPageHeight = function() { return $document.height(); }, getScrollTop = function() { return parseInt($scrollElement.scrollTop() || $window.scrollTop(), 10); }, setScrollTop = function(y) { $scrollElement.stop(true, false).scrollTop(y); }, myScrollTo = function(y, newAnchror) { // Call page scrolling to a value (like native window.scrollBy(x, y)) // Can be flooded isAnimated = true; // kill waypoint AUTO hash var duration = 360 + (Math.abs(y - getScrollTop()) * 0.42); // Duration depend on distance... if (duration > 2222) duration = 0; // Instant go !! ^^ $scrollElement.stop(true, false).animate({ scrollTop: y }, { duration: duration, complete: function() { // Listenner of scroll finish... if (newAnchror) setHash(newAnchror); // If new anchor isAnimated = false; } }); }, goToScreen = function(dir) { // Scroll viewport page by paginette // 1, -1 or factor var winH = parseInt((getWinHeight() * 0.75) * dir); // 75% de la hauteur visible comme unite myScrollTo(getScrollTop() + winH); }; myScrollTo((getPageHeight() / 2), 'iamAMiddleAnchor'); 

क्रोम में एक बग है (जब हमने सफारी में चेक नहीं किया था) जो जावास्क्रिप्ट की विभिन्न चौड़ाई और ऊंचाई माप में अप्रत्याशित परिणाम देता है पृष्ठभूमि में टैब खोलने पर ( बग विवरण यहां ) – हमने जून में बग लॉग इन किया था और यह अनसुलझा हुआ बनी हुई है क्योंकि ।

यह संभव है कि आप क्या करने का प्रयास कर रहे हैं, इस बारे में बग का सामना करना पड़ा है

 setTimeout(function() { $("body,html,document").scrollTop( $('body').height() ); }, 100); 

यह शायद काम करना चाहिए, भले ही समय 10ms है

Safari, Firefox, और IE7 के लिए काम करता है (IE8 की कोशिश नहीं की है) साधारण परीक्षण:

 <button onclick='$("body,html").scrollTop(0);'> Top </button> <button onclick='$("body,html").scrollTop(100);'> Middle </button> <button onclick='$("body,html").scrollTop(250);'> Bottom </button> 

अधिकांश उदाहरण एक या दोनों का उपयोग करते हैं, लेकिन रिवर्स ऑर्डर में (यानी, "html, body")।


(और वहां के अर्थ शुद्ध पुरूषों, मेरी चॉप बस्ट नहीं करते हैं – मैं इसे सप्ताहों के लिए देख रहा हूं, यह एक सरल उदाहरण है, जो एक्सएचटीएमएल सख्त की पुष्टि करता है। अपने लिए अमूर्तता और घटना बाध्यकारी ब्लोट के 27 परत बनाने के लिए स्वतंत्र महसूस करें मन में शांति की OCD शांति। बस कृपया श्रेय दें, क्योंकि jQuery फ़ोरम में लोग, एसओ, और जी सामान को खांसी नहीं दे सकते थे।

कौन सा तत्व offsetParent है दूसरे के लिए offsetParent अच्छी तरह से निर्दिष्ट नहीं है और ब्राउज़र में भिन्न हो सकते हैं। यह स्क्रॉल करने वाला माता पिता होने के लिए आपको गारंटी नहीं दी जाती है।

शरीर को भी पृष्ठ का मुख्य स्क्रॉल तत्व नहीं होना चाहिए। यह केवल Quirks मोड में है, जो सामान्य रूप से आप बचाना चाहते हैं।

offsetTop / offsetLeft / offsetParent माप स्वयं द्वारा बहुत उपयोगी नहीं हैं, वे केवल वास्तव में विश्वसनीय होते हैं जब आप इन्हें कुल पृष्ठ-सापेक्ष समन्वय (jQuery में position() रूप में प्राप्त करने के लिए एक पाश में उपयोग करते हैं )। आपको पता होना चाहिए कि वह तत्व क्या है जिसे आप स्क्रॉल करना चाहते हैं और पृष्ठ में अंतर को पता लगा सकते हैं कि उस और वंश के target बीच समन्वय करना, यह जानने के लिए कि यह कितना स्क्रॉल करेगा

या अगर यह पृष्ठ हमेशा ही होता है, तो आप स्क्रॉलिंग के बारे में बात कर रहे हैं, बस एक location.href= '#'+target.id नेविगेशन का उपयोग करें।

यह एफएफ और वेबकिट में काम करता है; IE अभी तक परीक्षण नहीं किया है


कैसा रहेगा

 var top = $('html').scrollTop() || $('body').scrollTop(); 

यह मेरे लिए काम किया है, बस इसे jQuery पर छोड़ दें

 $("html,body").animate({ scrollTop: 0 }, 1); 

असल में आपको ब्राउजर को पता होना चाहिए और ब्राउजर अंतर के आधार पर कोड लिखना चाहिए। चूंकि jQuery क्रॉस-ब्राउज़र है, इसलिए इसे पहले चरण को नियंत्रित करना चाहिए। और अंत में आप 1 मिलीसेकंड में स्क्रॉलिंग को एनिमेट करके ब्राउज़र का जेएस इंजन बनाते हैं।

ऐसे तत्वों का कोई बड़ा विकल्प नहीं है जो एक स्क्रॉलपॉप मान के साथ ऑटो-नियुक्त हो सकते हैं जैसे कि हम एक वेबपेज स्क्रॉल करते हैं

इसलिए मैंने संभावित तत्वों के माध्यम से पुनरावृत्त करने के लिए और हम जो चाहें वापस लौटने के लिए यह छोटा कार्य लिखा।

 var grab=function (){ var el=$(); $('body#my_body, html, document').each(function(){ if ($(this).scrollTop()>0) { el= ($(this)); return false; } }) return el; } //alert(grab().scrollTop()); 

Google क्रोम में यह हमें शरीर में मिलेगा – IE – HTML

(ध्यान दें, हमें overflow:auto सेट करने की आवश्यकता नहीं है overflow:auto हमारे एचटीएमएल या शरीर पर स्पष्ट रूप से overflow:auto ।)

मुझे इस समस्या का सामना करना पड़ रहा था, मैंने नीचे दिए गए लिंक को बनाया और jQuery के स्क्रॉल कोड को लागू किया और यह फ़ायरफ़ॉक्स, आईई, ओपेरा में पूरी तरह से काम किया लेकिन क्रोम और सफारी में काम नहीं किया। मैं jQuery सीख रहा हूं इसलिए मुझे नहीं पता कि यह समाधान तकनीकी रूप से सही है, लेकिन यह मेरे लिए काम किया है। मैंने सिर्फ 2 स्क्रोलटेप कोड लागू किए हैं, पहले एक $ ('html') का उपयोग करता है जो फ़ायरफ़ॉक्स, आदि के लिए काम करता है। दूसरा वाला क्रोम और सफारी के लिए $ ('html बॉडी') का उपयोग करता है।

 $('a#top').click(function() { $('html').animate({scrollTop: 0}, 'slow'); return false; $('html body').animate({scrollTop: 0}, 'slow'); return false; }); 

वास्तव में, ऐसा लगता है कि इसे सफारी में काम करने के लिए एनीमेशन की आवश्यकता होती है। मैं इसके साथ समाप्त हुआ:

 if($.browser.safari) bodyelem = $("body"); else bodyelem = $("html,body"); bodyelem.animate({scrollTop:0},{queue:false, duration:100, easing:"linear", complete:callbackFunc}); 

मुझे यकीन नहीं है कि यह मामला है:

मैं jQuery के लिए Google के सीडीएन का प्रयोग कर रहा था

//ajax.google....... से पहले "https:" //ajax.google....... , ऐसा लगता है कि सफ़ारी ने इसे स्थानीय मार्ग के रूप में पहचाना (यह //ajax.google....... – तत्व का निरीक्षण किया)

क्षमा करें, केवल सफारी 7.0.3 में परीक्षण किया 🙁

मेरा मामला, बटन दो 8 लिंकों के लिए काम कर रहा था। मेरा समाधान था


इसने एक अच्छी स्क्रॉल प्रभाव भी बनाया

कुछ प्रश्नों / उत्तरों से समाधानों को सारांशित करने के लिए:

यदि आप वर्तमान स्क्रॉल ऑफ़सेट उपयोग प्राप्त करना चाहते हैं:


स्क्रॉल ऑफ़सेट उपयोग को सेट करने के लिए:


स्क्रॉल उपयोग के उपयोग को चेतन करने के लिए:

 $('html,body').animate({scrollTop: x}); 

यह वास्तव में एक बग नहीं है, ब्राउज़र विक्रेताओं द्वारा आरोपण में सिर्फ एक अंतर है

एक नियम के रूप में ब्राउज़र सूँघने से बचें। वहाँ एक निफ्टी jQuery फिक्स है जो जवाब में संकेत दिया गया है।

यह मेरे लिए क्या काम करता है: $('html:not(:animated),body:not(:animated)').scrollTop()