2012-12-15 14 views
5

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

यदि संभव हो तो, मैं jQuery से बचना चाहता हूं।

+0

"run_at" का प्रयोग करें: "document_end" गारंटी देगा कि div को जितनी जल्दी हो सके * इंजेक्शन दिया गया है, हालांकि यह गारंटी नहीं देता है कि उपयोगकर्ता डोम में यह परिवर्तन नहीं देख पाएंगे। –

उत्तर

1

मैं 100% निश्चित नहीं हूं, लेकिन क्रोम एक्सटेंशन डेवलपर मार्गदर्शिका को देख रहा हूं, ऐसा लगता है कि आप सामग्री स्क्रिप्ट का उपयोग कर रहे हैं और run_at फ़ील्ड को अपने एक्सटेंशन के मैनिफेस्ट में document_start के रूप में निर्दिष्ट करें, तो इसे पहले फ़ाइलों को इंजेक्ट करना चाहिए डोम का निर्माण किया गया है।

+0

सही। नोट: document_start पर, 'document.body अभी तक मौजूद नहीं है। आपको 'document.documentElement.appendChild (element) का उपयोग करके इंजेक्ट करना होगा;' –

+0

@RobW, इसलिए इंजेक्शन 'div'' body' के बाहर रखा जाएगा? यह गलत एचटीएमएल की तरह लगता है। – Stan

+0

@Stan document_start पर, केवल मौजूदा टैग '' है, इसलिए यह एकमात्र विकल्प है। और मुझे एक पृष्ठ का सामना नहीं हुआ है जहां यह विधि विफल रही है। –

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