2010-02-04 7 views
21

मेरे पास एक ऐसा फॉर्म है जो पॉपअप में प्रदर्शित होता है। लोड होने के बाद, पृष्ठभूमि ग्रे हो गई है, लेकिन उपयोगकर्ता अभी भी पृष्ठभूमि सामग्री को ऊपर और नीचे स्क्रॉल कर सकता है।पॉपअप प्रदर्शित करते समय पृष्ठभूमि स्क्रॉलिंग को रोकें

मैं पृष्ठभूमि को स्क्रॉलिंग से कैसे रोकूं?

Example here

'ईमेल इस उद्धरण' पीडीएफ स्क्रीनशॉट के अधिकार के लिए लिंक।

धन्यवाद! जो

उत्तर

17

एक विकल्प अस्थायी रूप से hiddenbody पर करने के लिए overflow गुण सेट करने के लिए है, कि से छुटकारा मिल जाएगा स्क्रॉल बार, लेकिन पृष्ठ को समायोजित करते समय एक छोटा झिलमिलाहट का कारण बनता है।

अन्य विकल्प $(window).scroll() ईवेंट पर टैप करना और वहां से झूठी वापसी करना है। इससे थोड़ी झिलमिलाहट भी हो जाएगी क्योंकि ब्राउजर उस झूठी कथन के लिए तेज़ प्रतिक्रिया नहीं देता है।

आपका सबसे अच्छा शर्त एक अलग फाइल करने के लिए अपने क्लिक करें घटना संचालकों को स्थानांतरित करने और बाध्यकारी वहाँ क्या करना है:

$(function() { 
    $('.emailPost').click(function() { 
     $(window).scroll(function() { return false; }); 
     pageTracker._trackPageview('/onclick/emailquote');    
    }); 
}); 

कि स्क्रॉल से एक पृष्ठ पर रोक लगनी चाहिए। संवाद बंद होने के बाद बाध्य को हटाने के लिए याद रखें, अन्यथा पृष्ठ अब स्क्रोल करने योग्य नहीं होगा! आप का उपयोग कर बांध निकाल सकते हैं:

$(window).unbind('scroll'); 
+0

धन्यवाद। लेकिन क्या इस समाधान से स्क्रीन झिलमिलाहट होगी? इसके अलावा, पेजट्रैकर वर्डप्रेस में स्थापित कस्टम फ़ील्ड के माध्यम से पारित किया गया है, और jQuery के साथ इंटरफ़ेस करना आसान नहीं होगा। – Joe

+0

सफारी 4 और फ़ायरफ़ॉक्स 3.5.7 में काम नहीं करता है। – DataGreed

+1

मेरे पास एक ही स्थिति है। यह एक अच्छा समाधान है, क्योंकि यह FF24.0 में स्क्रॉल को लॉक करता है, लेकिन यह अभी भी पृष्ठ को एंड/होम/पेजअप/पेजडाउन का उपयोग करके स्थानांतरित करने की अनुमति देता है; यह भी आईई 8 में काम नहीं करता है। मैंने उन दो ब्राउज़रों के मुकाबले इसका परीक्षण नहीं किया है, लेकिन उपर्युक्त टिप्पणी यह ​​दिखाने के लिए प्रतीत होती है कि इस प्रश्न को कुछ काम की जरूरत है। – Thomas

0

अपने लिंक में # टैग का उपयोग न करें!

यह एंकर # पर स्क्रॉल करने का प्रयास करेगा, लेकिन क्योंकि यह खाली है, यह पृष्ठ के शीर्ष पर स्क्रॉल करेगा। करने के लिए अपने लिंक

संपादित करें:

<a href="" onclick="javascript: pageTracker._trackPageview('/onclick/emailquote');" class="emailPost">Email this quote</a>

(href नोटिस = "")

+1

बिल्कुल हैश टैग का उपयोग करें और किसी भी मामले में इनलाइन जावास्क्रिप्ट का उपयोग न करें। ब्राउज़र को # पर रीडायरेक्ट करने से रोकने के लिए, आप हैंडलर फ़ंक्शन के अंत में 'वापसी झूठी' का उपयोग कर सकते हैं। http://crisp.tweakblogs.net/blog/313/the-useless-javascript-pseudo-protocol.html –

+0

क्षमा करें, रोजियर, जिसने इस मुद्दे को हल नहीं किया। यह इसे पृष्ठ रीलोड करता है जो पॉपअप को बंद करता है। हालांकि धन्यवाद! – Joe

+0

हाँ, आपको अभी भी झूठी झूठी वापसी का उपयोग करना होगा! लेकिन यह वास्तव में मूल जेएस है;) '' ठीक काम करेगा। – YesMan85

26

शरीर के स्क्रॉलबार छिपाने जब पॉपअप

 document.body.style.overflow = "hidden"; 

खोलने और वापस लौटने जब आईओएस मोबाइल के लिए पॉपअप

 document.body.style.overflow = "visible"; 
+0

छुपा ओवरफ्लो असाइन करने से स्क्रॉल बार गायब हो जाएगा, इस प्रकार पृष्ठ की चौड़ाई बदल जाएगी। यह स्क्रॉल बार को अक्षम नहीं करता है, हालांकि यह होने से स्क्रॉलिंग को रोकता है। – Thomas

+2

मुझे यह समाधान पसंद है :) – jondinham

+0

आपका समाधान काम करता है लेकिन जब आप पॉप-अप बंद करते हैं और फिर इसे सक्षम करते हैं तो स्क्रॉल इसे क्षैतिज स्क्रॉल भी दे रहा है। जो आवश्यक नहीं है। –

0

इस कोड को ब्लॉक काम करता है को बंद करने डिवाइस जहां स्क्रॉल समस्या बहुत आम है।

$('body').on('touchmove', function(e) { 
    if ($('.scroll-disable').has($(e.target)).length) e.preventDefault(); 
}); 
$('body').on('shown.bs.modal', function() { 
    $(this).addClass('scroll-disable'); 
}); 
$('body').on('hidden.bs.modal', function() { 
    $(this).removeClass('scroll-disable'); 
});