2010-10-14 17 views
23

मेरे पास एक स्क्रिप्ट है जिसे मैं लोड करना शुरू करने से पहले भागना चाहता हूं। स्क्रिप्ट एक चर के मान की जांच करता है और मान के आधार पर उपयोगकर्ता को नए पृष्ठ पर रीडायरेक्ट करता है।पेज से पहले एक jQuery या जावास्क्रिप्ट को कैसे चलाएं

मैं सफलतापूर्वक चर की जांच कर सकता हूं और यदि आवश्यक हो तो रीडायरेक्ट कर सकता हूं लेकिन पृष्ठ अभी भी खाली पृष्ठ लोड और प्रदर्शित करता है लेकिन फिर तुरंत दूसरे पृष्ठ पर रीडायरेक्ट करता है। मैं नहीं चाहता कि पृष्ठ पर उस खाली पृष्ठ को रीडायरेक्ट से पहले प्रदर्शित किया जाए। तो

window.onload = function(){ } 
+1

यदि आप रीडायरेक्ट करने के लिए सर्वर साइड स्क्रिप्ट (जैसे php) का उपयोग करते हैं तो यह कोई समस्या नहीं होगी। – Mischa

+0

इस समय आप इसे कैसे कर रहे हैं? – harto

उत्तर

6

हो सकता है कि आप उपयोग कर रहे:

$(document).ready(function(){ 
    // Your code here 
}); 

बजाय इस प्रयास करें पृष्ठ पर सेवा करने से पहले कार्य को पूरा करने के लिए आपको कुछ सर्वर पक्ष स्क्रिप्टिंग का उपयोग करने की आवश्यकता होगी। पृष्ठ क्लाइंट साइड पर आपके जावास्क्रिप्ट को निष्पादित करने के समय से पहले ही लोड हो रहा है।

यदि जावास्क्रिप्ट आपका एकमात्र विकल्प है, तो आपकी सबसे अच्छी बात यह है कि अपनी स्क्रिप्ट को पहले .js फ़ाइल को अपने दस्तावेज़ के <head> में शामिल किया जाए।

जावास्क्रिप्ट के बजाय, मैं आपके अपाचे या nginx सर्वर कॉन्फ़िगरेशन में अपने रीडायरेक्ट तर्क को सेट करने की अनुशंसा करता हूं।

+0

हां मैं $ (दस्तावेज़) का उपयोग कर रहा हूं। पहले से ही (फ़ंक्शन() { // आपका कोड यहां }); यह समारोह केवल क्या जावास्क्रिप्ट – Ver

+0

में ऐसा करने के लिए कोई भी संभव है '$ (दस्तावेज़) के भीतर कोड .ready()' आपके पृष्ठ को पढ़ने के बाद चलाया जाता है, लेकिन अतिरिक्त संपत्तियों (उदा। छवियों) डाउनलोड होने से पहले। '$ (दस्तावेज़) में लिपटे स्क्रिप्ट से पहले आप * स्क्रीन पर कुछ देखेंगे। पहले से ही चल रहे हैं। – Blackcoat

6

आप कुछ भी रीडायरेक्ट से पहले प्रदर्शित करने के लिए नहीं करना चाहते हैं,:

धन्यवाद, वर

9
<head> 
    <script> 
    if(condition){ 
     window.location = "http://yournewlocation.com"; 
    } 
    </script> 
</head> 
<body> 
    ... 
</body> 

इस हालत की जांच और यूआरएल स्थान में परिवर्तन पेज कुछ भी renders से पहले बाध्य करेगा। यह ध्यान देने योग्य है कि आप विशेष रूप से jQuery लाइब्रेरी पर कॉल करने से पहले ऐसा करना चाहते हैं ताकि आप उस लाइब्रेरी लोडिंग से बच सकें। कुछ भी तर्क हो सकता है कि यह बेहतर एक आवरण विधि में रखा जाता है और इसलिए यहाँ कहा जा सकता है कि विधि है:

function redirectHandler(condition, url){ 
    if(condition){ 
    window.location = url; 
    }else{ 
    return false; 
    } 
} 

कि ऐसी अनेक शर्तों की जाँच करें और अलग-अलग स्थानों पर आधारित पर रीडायरेक्ट करने की अनुमति होगी:

if(redirectHandler(nologgedin, "/login.php")||redirectHandler(adminuser, "/admin.php")); 

या यदि आप केवल एक बार और केवल एक बार चलाने की आवश्यकता है, लेकिन आप ग्लोबल नेम स्पेस में कुछ भी नहीं होने की तरह है:

(function(condition, url){ 
    if(condition)window.location=url; 
})(!loggedin, "/login.asp"); 
6

$ (document) .ready (उपयोग न करें) बस डाल रों सीधे पृष्ठ के मुख्य भाग में क्रिप्ट करें। पेजों को ऊपर से नीचे संसाधित किया जाता है, इसलिए शीर्ष पर चीजें पहले संसाधित की जाती हैं। ;)

1

इस चाल करना चाहिए। जब उपयोगकर्ता पृष्ठ से दूर निकलता है तो अनलोड ईवेंट विंडो तत्व पर भेजा जाता है।

$(window).unload(function() { 
    //do something 
}); 
1

अनलोड घटना का प्रयास करें

window.onload = function(event) { 
    event.stopPropagation(true); 
    window.location.href="http://www.google.com"; 
}; 

गुड लक  :

6

छिपाएं सीएसएस के साथ शरीर तो यह दिखाने के बाद पृष्ठ लोड होता है:

सीएसएस:

html { visibility:hidden; } 

जावास्क्रिप्ट

$(document).ready(function() { 
    document.getElementsByTagName("html")[0].style.visibility = "visible"; 
}); 

पेज खाली से प्रदर्शित करने के लिए जाना होगा पेज लोड होने पर सभी सामग्री, सामग्री का कोई फ्लैश नहीं, छवियों को लोड नहीं करना आदि

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