क्या सामग्री स्क्रिप्ट केवल इंजेक्शन देना संभव है यदि दस्तावेज़ की सामग्री प्रकार विशिष्ट पैटर्न से मेल खाता हो? असल में, मेरा लक्ष्य बहुत आसान है: मुझे HTML दस्तावेज़ केवल (अब के लिए, यह XML दस्तावेज़ों में भी इंजेक्शन दिया गया है) में इंजेक्शन की गई मेरी सामग्री स्क्रिप्ट की आवश्यकता है। सामग्री स्क्रिप्ट को "document_start" पर इंजेक्शन दिया जाना चाहिए।क्रोम एक्सटेंशन सामग्री स्क्रिप्ट को किसी विशिष्ट सामग्री प्रकार से सीमित कैसे करें?
उत्तर
मैं इसी तरह की समस्या पर आया और इसे निम्न तरीके से हल किया।
दस्तावेज़ों की विविधता को सीमित करने के बजाय जहां सामग्री स्क्रिप्ट इंजेक्शन दी जाती है, दस्तावेज़ Content-Type
के आधार पर, मैंने स्क्रिप्ट को सभी दस्तावेजों में इंजेक्ट करने का निर्णय लिया, लेकिन इसे केवल उचित में निष्पादित करने का निर्णय लिया।
यह विश्लेषण करने document.xmlVersion
और document.doctype
गुण द्वारा किया जाता है:
document.doctype
एक HTML दस्तावेज मेंnull
नहीं होना चाहिए;document.xmlVersion
किसी XML दस्तावेज़ मेंnull
नहीं होना चाहिए;
तो, उनमें से किसी एक को दूसरे प्रकार से अलग करने और उपयुक्त होने पर सभी आवश्यक स्क्रिप्ट सामग्री को "बाध्य" करना आसान है। विशेष रूप से, कोई छोटे स्क्रिप्ट लोडर को इंजेक्ट कर सकता है, जो सशर्त रूप से अतिरिक्त, संभावित रूप से भारी सामान लोड करेगा।
क्रोम अभी भी दस्तावेज़ प्रकार द्वारा स्क्रिप्ट इंजेक्शन को सीमित करने के लिए कोई साधन प्रदान नहीं करता है।
ऐसा करने का सबसे मजबूत तरीका chrome.webRequest.onHeadersReceived
के माध्यम से है, जो आपको प्रतिक्रिया हेडर जानकारी (Content-Type
सहित) को क्वेरी और बनाए रखने की अनुमति देता है। दुर्भाग्यवश, यह API वर्तमान में क्रोम की स्थिर रिलीज़ में उपलब्ध नहीं है। (आप क्रोम के मौजूदा कथन में प्रयोगात्मक एपीआई का उपयोग कर सकते हैं, लेकिन आप इसका उपयोग करने वाले एक्सटेंशन प्रकाशित नहीं कर पाएंगे।)
आपके लिए एक संभावित समाधान यह निर्धारित करना है कि इंजेक्शन दस्तावेज़ का क्रोम द्वारा इलाज किया जा रहा है या नहीं एक्सएमएल के रूप में (और यदि ऐसा है, तो दस्तावेज़ को संसाधित करना बंद करें।) इसे पूरा करने के लिए एक हैक यह जांचना है कि document.getElementById('webkit-xml-viewer-source-xml')
null
है या नहीं। क्रोम/वेबकिट के एक्सएमएल व्यूअर का यह तत्व हिस्सा।
- 1. क्रोम एक्सटेंशन - पॉपअप से सामग्री स्क्रिप्ट
- 2. सामग्री स्क्रिप्ट क्रोम
- 3. क्रोम एक्सटेंशन सामग्री स्क्रिप्ट https://chrome.google.com/webstore/
- 4. सामग्री सुरक्षा नीति: क्रोम एक्सटेंशन
- 5. क्रोम एक्सटेंशन कोड बनाम सामग्री स्क्रिप्ट बनाम इंजेक्शन स्क्रिप्ट
- 6. क्रोम एक्सटेंशन: पृष्ठभूमि से सामग्री स्क्रिप्ट भेजने के लिए मैसेज
- 7. क्रोम सामग्री-स्क्रिप्ट एक्सटेंशन से iframes तक पहुंच
- 8. Google क्रोम जावास्क्रिप्ट डीबगर और सामग्री स्क्रिप्ट
- 9. ब्राउज़र क्रिया पर क्रोम एक्सटेंशन सम्मिलित सामग्री स्क्रिप्ट
- 10. फ़ायरफ़ॉक्स एक्सटेंशन में किसी सामग्री स्क्रिप्ट के बराबर?
- 11. क्रोम एक्सटेंशन: सामग्री स्क्रिप्ट और background.html के बीच संचार
- 12. क्या Google क्रोम एक्सटेंशन "सामग्री" स्क्रिप्ट सैंडबॉक्स हैं?
- 13. सामग्री प्रकार से फ़ाइल एक्सटेंशन कैसे प्राप्त करें?
- 14. सामग्री-प्रकार शीर्षलेख
- 15. google.promeState के माध्यम से पृष्ठ बदलते समय Google क्रोम एक्सटेंशन में सामग्री स्क्रिप्ट कैसे सम्मिलित करें?
- 16. क्रोम एक्सटेंशन में सामग्री स्क्रिप्ट फ़ाइल का उपयोग कर सीएसएस को इंजेक्ट कैसे करें?
- 17. बिना किसी संघर्ष के क्रोम एक्सटेंशन सामग्री में jQuery का उपयोग कैसे करें
- 18. क्रोम डेस्कटॉप अधिसूचना सामग्री
- 19. मैं विस्तार के सामग्री स्क्रिप्ट से अपना क्रोम एक्सटेंशन का पॉपअप पेज कैसे खोल सकता हूं?
- 20. क्रोम एक्सटेंशन सामग्री स्क्रिप्ट्स window.opener का उपयोग कर सकते हैं?
- 21. सामग्री प्रकार
- 22. UIWebView - सीमित सामग्री चौड़ाई
- 23. SharePoint सामग्री प्रकार को कैसे अपडेट करें?
- 24. सामग्री प्रकार
- 25. प्लोन सामग्री प्रकार-विशिष्ट पोर्टलेट असाइनमेंट
- 26. सामग्री स्क्रिप्ट और एडन के बीच कोड कैसे साझा करें?
- 27. क्रोम एक्सटेंशन
- 28. सुंदर सूप: किसी विशिष्ट तालिका की सामग्री प्राप्त करें
- 29. सामग्री प्रकार
- 30. क्रोम एक्सटेंशन: सामग्री स्क्रिप्ट और पृष्ठभूमि स्क्रिप्ट के बीच एक ऑब्जेक्ट साझा करना
क्या होगा यदि आपकी सामग्री स्क्रिप्ट एक ईवेंट श्रोता को एक क्रिया करने से पहले दस्तावेज़ लोड होने की प्रतीक्षा करने के लिए जोड़ती है? उदाहरण के लिए, 'document.addEventListener ("DOMContentLoaded", function() {do.stuff()}; ' – cheeken
यही मुझे टालना चाहिए, मेरी स्क्रिप्ट को पहले निष्पादित किया जाना चाहिए (दस्तावेज़ लोड होने से पहले) – spektom
मैं देखता हूं। उस स्थिति में, मेरे पास कोई अन्य सिफारिश नहीं है। शुभकामनाएँ। – cheeken