2012-12-28 30 views
8

के साथ पृष्ठ लोडिंग ब्राउज़र संकेतक/एनिमेटेड आइकन प्रारंभ करना क्या आपके द्वारा चालू किए गए पृष्ठ को बदले बिना ब्राउज़र थ्रोबबर (पृष्ठ लोडिंग सूचक) को शुरू और बंद करने का कोई आसान तरीका है? अधिमानतः कोई बाहरी पुस्तकालय या AJAX कॉल के साथ।जावास्क्रिप्ट

+2

मैंने कभी इसके लिए एपीआई नहीं देखा है, लेकिन मुझे एक के बारे में जानने में दिलचस्पी होगी। हालांकि, मुझे गंभीरता से संदेह है कि, विशेष रूप से इसे बंद करने की क्षमता - ऐसा लगता है कि यह एक सुरक्षा समस्या होगी। – Pointy

+0

जावास्क्रिप्ट सीमित है (पता एपीआई संशोधित करने वाला इतिहास) व्यूपोर्ट के बाहर कोई अधिकार क्षेत्र नहीं है, जब तक कि आप इसे कुछ प्लगइन या ब्राउज़र एक्सटेंशन की तरह लीवरेज न दें। – Joseph

+0

हम्म। अच्छा प्रश्न। शायद एक और तरीका है। आप क्या खत्म करने की कोशिश कर रहे हैं? –

उत्तर

12

नहीं। आप AJAX कॉल या जो कुछ भी कर कर स्पिन करने के लिए इसे मजबूर करने का प्रयास कर सकते हैं, लेकिन नहीं। ब्राउज़र का वह हिस्सा आपके लिए नहीं है, यह ब्राउज़र के लिए है!

यह पूछने की तरह है कि आप सिस्टम घड़ी बदल सकते हैं ताकि आपका गेम जिसमें टाइम मशीन शामिल हो और अधिक यथार्थवादी हो।

+0

मैं लोडिंग को इंगित करने के लिए थ्रोबबर का उपयोग कर रहा हूं जो मेरा मानना ​​है कि इसका उद्देश्य उद्देश्य है। उदाहरण के लिए, यदि मैं फ्लैश में एक वेब सेवा कॉल कर रहा हूं तो थ्रोबबर दिखाई नहीं देता है। – William

+6

फ्लैश को अब वेब के लिए पुरानी तकनीक माना जाता है, यह एक कारण है - यह एक छोटे से आयत में रहता है, और सैंडबॉक्सिंग के कारण स्वयं से बाहर नहीं कर सकता है। ब्राउजर थ्रोबिंग नहीं कर रहा है, क्योंकि सब कुछ डाउनलोड हो गया है। उदाहरण के लिए क्रोम में याद रखें, थ्रोबबर DNS लुकअप के लिए एक तरफ घुमाता है, और डेटा डाउनलोड के लिए एक तरीका - एक सीपीयू गहन गतिविधि उनमें से कोई नहीं है। –

+0

@Rich - यह किसी भी तरह से ओपी के प्रश्न का उत्तर नहीं देता है, फिर भी इस समय 11 वोटों में यह है। मजेदार, लेकिन मैंने कहीं भी नहीं पढ़ा यह एक राजनीतिक चर्चा है !! क्या यह? : उलझन में: इसके अलावा, जिज्ञासा से बाहर, आत्म-समर्थन मंच के रूप में आपको कितने अलग-अलग खातों का उपयोग करना है? – TildalWave

3

आप एक साधारण सर्वर साइड स्क्रिप्ट को कॉल कर सकते हैं, चलिए इसे 'sleep.cgi' कहते हैं, जो निष्पादन (नींद) को रोक देगा और इसके साथ छिपे हुए आईफ्रेम में कुछ सरल स्व-पुनः लोडिंग पृष्ठ की डिलीवरी में देरी होगी। इससे आपको किसी भी ब्राउज़र ब्राउज़र को 'ब्राउजर थ्रोबबर' (पेज लोडिंग इंडिकेटर) कहने पर बहुत अधिक प्रदर्शन करना चाहिए। एक बार जब आप थ्रोबबर को प्रदर्शित करने के लिए जो भी कारण चाहते हैं, तो आप बस रिक्त स्ट्रिंग पर उल्लिखित आईफ्रेम स्थान को रीसेट कर देंगे। इस तरह मैं यह करूँगा:

1) एक साधारण सर्वर-साइड स्क्रिप्ट लिखें जो अनुरोध लेता है और 30 सेकंड तक निष्पादन को रोकता है, ब्राउज़र की पेज लोड टाइमआउट दीवार को हिट नहीं करना चाहता। एक बार नींद की अवधि खत्म हो गया है, इस सर्वर स्क्रिप्ट की तर्ज पर कुछ के साथ प्रतिक्रिया करता है:

<html><body onload="location.reload();"></body></html> 

यह पाश के लिए मजबूर कर जब तक आप 'लोड पेज' प्रदर्शित करने के लिए सूचक ब्राउज़र चाहते हैं।

2) जावास्क्रिप्ट कार्यों कि शुरू करने और अनुरोध पर 'throbber' बंद करो और HTML तत्वों जोड़ना होगा हम उपयोग करेंगे समर्थन लिखें:

<script> 
    function startThrobber(){ 
    document.getElementById('throbberFrame').src='sleep.cgi?'+Math.random(); 
    } 
    function endThrobber(){ 
    document.getElementById('throbberFrame').src=''; 
    } 
</script> 

<div id="throbberWrapper" style="display:none;visibility:hidden;"> 
    <iframe id="throbberFrame" style="width:1px;height:1px;"></iframe> 
</div> 

मैं क्रोम में एक त्वरित परीक्षण किया है/आईई/ओपेरा/फ़ायरफ़ॉक्स और ऐसा लगता है कि ठीक है। हालांकि, मुझे ऐसा कुछ भी करने की ज़रूरत नहीं है, हालांकि।

संपादित करें: अपने वेब सर्वर PHP स्क्रिप्ट का समर्थन करता है, तो यहां नींद समारोह संदर्भ है: http://php.net/manual/en/function.sleep.php मैं PHP में लिखने नहीं है, लेकिन मेरा मानना ​​है कि अपने PHP दस्तावेज़ की तर्ज पर कुछ दिखना चाहिए:

<html><body onload="location.reload();"> 
<?php 
    // sleep for 29 seconds 
    sleep(29); 
?> 
</body></html> 

चीयर्स !

+0

धन्यवाद इस उत्कृष्ट उत्तर के लिए TildalWave – William

+0

@ विलियम - इस 'नींद' स्क्रिप्ट के लिए कैश कंट्रोल हेडर पर विचार करने की एक और बात है । 2 9 सेकेंड के बाद आप ठीक से काम करने के लिए किसी भी ब्राउज़र साइड कैश को अक्षम करना चाहेंगे। आप इस PHP स्क्रिप्ट के लिए कस्टम कैश कंट्रोल हेडर जोड़कर या किसी भी कैशिंग हेडर को हटाने के लिए अपने वेब सर्वर की कॉन्फ़िगरेशन को संशोधित करके इसे प्राप्त कर सकते हैं। PHP के लिए कोड (अतीत में दिनांक के साथ) होगा: हेडर ("कैश-कंट्रोल: नो-कैश, अनिवार्य होना चाहिए"); शीर्षलेख ("समाप्त हो जाता है: शनि, 26 जुलाई 1 99 7 05:00:00 GMT"); – TildalWave

+0

@TildalWave: क्या यह "बहुत सारे रीडायरेक्ट" पहचान से प्रभावित होता है? –

1

UI बहुत ही सीपीयू-गहन लोड होने पर फ्रीज करता है ताकि आप एनिमेटेड जीआईएफ या प्रोग्रेस बार को कभी न देख सकें।

आपके पास XY समस्या है। आप सीपीयू गहन संचालन को छोटे हिस्सों में विभाजित करने के लिए सेटटाइमआउट का उपयोग कर ब्राउज़र को ठंड से रोक सकते हैं। ब्राउज़र थ्रोबबर एक यूआई तत्व है जो सिग्नल को नेटवर्क से लोड किया जा रहा है; यदि आप इसे किसी अन्य कारण से इस्तेमाल करते हैं तो यह बेहद भ्रमित है।

+0

यह कुछ भी कैसे जवाब देता है और क्यों हर कोई प्रदर्शित करने के लिए थ्रोबबर को मजबूर करने का अनुमान लगाता है, कुछ सामग्री लोड करने से कुछ और के लिए इस्तेमाल किया जाएगा। ओपी स्पष्ट रूप से वर्णन करता है कि वह लोडिंग को इंगित करने के लिए इसका उपयोग करेगा (फ्लैश सामग्री के बावजूद) और यह इसका उद्देश्य है। इसका 'UI फ्रीज' के साथ कुछ लेना देना नहीं है, जब तक कि वास्तव में ऐसा नहीं किया जाना चाहिए (शॉर्ट लूप), जो मुझे संदेह है कि ओपी का इरादा था। वह क्या हो रहा है इसके बारे में बेहतर संकेत देने के लिए उपयोगकर्ताओं को अतिरिक्त लंबाई क्यों देगा और फिर ऐसी सुविधा रखने के लिए इन उपयोगकर्ताओं को अतिरिक्त समस्याएं पैदा करेंगी? – TildalWave

+1

@TildalWave: OP में एक [XY समस्या] है (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)। वह वास्तव में ब्राउज़र थ्रोबबर को नियंत्रित नहीं करना चाहता, वह जो चाहता था वह एक सीपीयू बाध्य प्रक्रिया की प्रगति को इंगित करना है, जिसमें ब्राउज़र के थ्रोबर का उपयोग करना एक बहुत ही उपयोगकर्ता-शत्रुतापूर्ण समाधान है (भले ही इसे नकली का उपयोग किए बिना ठीक से किया जा सके कैशिंग मुद्दों और सभी के साथ AJAX कॉल)। ओपी ने संकेत दिया कि वह लोडिंग जीआईएफ का उपयोग नहीं कर सकता है, जो फ्रीजिंग यूआई के कारण है, जो वास्तव में एक उचित लिखित जावास्क्रिप्ट में अनावश्यक है। –

+0

मैं वास्तव में नहीं देखता कि आपको कहां से 'सीपीयू बाध्य' मिलता है। 'थ्रोबबर' ओपी का जिक्र किया गया था जिसका उपयोग अंतिम उपयोगकर्ता को इंगित करने के लिए किया गया था कि दस्तावेज़ (और इसके बाद के किसी भी हिस्से) डाउनलोड करने की प्रक्रिया में है। यह नेटवर्क गतिविधि इंगित करता है। आप संभवतः सिस्टम के घंटे का चश्मा आइकन के साथ भ्रमित कर रहे हैं। दो जरूरी चीजें नहीं हैं। सवाल फार्मूलेशन के लिए, यह केवल अर्थशास्त्र है और यह मेरे लिए प्रासंगिक है कि किस तरह के संगीत ओपी सुनने के लिए पसंद करते हैं। सवाल समझा और जवाब दिया गया था। इसके अलावा, अगर आपको यह पूछने की तरह पसंद नहीं है, तो इसे संपादित करने में संकोच न करें। ;) – TildalWave

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