मैं अपना पहला सफारी एक्सटेंशन बनाने की प्रक्रिया में हूं - एक बहुत ही सरल - लेकिन मैंने कुछ समस्याओं में भाग लिया है। एक्सटेंशन एक एकल, इंजेक्शन वाली स्क्रिप्ट पर उबाल जाता है जो मूल फ़ीड हैंडलर को बाईपास करने और http: // URI पर रीडायरेक्ट करने का प्रयास करता है। मेरे मुद्दे अब तक दो गुना हैं:सफारी एक्सटेंशन प्रश्न
- "श्वेतसूची" जिस तरह से मैं अपेक्षा करता हूं वह काम नहीं कर रहा है। चूंकि सभी फीड "फीड: //" प्रोटोकॉल के तहत दिखाए जाते हैं, इसलिए मैंने श्वेतसूची में इसे "फीड: // */*" (ब्लैकलिस्ट में कुछ भी नहीं) के रूप में कैप्चर करने का प्रयास किया है, लेकिन मैं एक अनुरोध में समाप्त हुआ लूप कि मैं समझ नहीं सकता। अगर मैं ब्लैकलिस्ट "http://*/*" और "https://*/*" मानों को सेट करता हूं, तो सब कुछ अपेक्षित काम करता है।
- मैं यह नहीं समझ सकता कि मेरी इंजेक्शन स्क्रिप्ट से मेरी सेटिंग्स का उपयोग कैसे करें। स्क्रिप्ट
beforeload
इवेंट हैंडलर बनाता है, लेकिन प्रलेखन में संकेतितsafari.extension.settings
पथ का उपयोग करके मेरी सेटिंग्स तक नहीं पहुंच सकता है।
मुझे एप्पल के दस्तावेज में कुछ भी नहीं मिला है यह इंगित करने के लिए कि सेटिंग्स मेरी स्क्रिप्ट से उपलब्ध नहीं होनी चाहिए। चूंकि एक्सटेंशन ऐसी नई सुविधा हैं, यहां तक कि Google सीमित प्रासंगिक परिणाम भी देता है और उनमें से अधिकांश आधिकारिक दस्तावेज़ीकरण से हैं।
मुझे क्या याद आ रही है?
धन्यवाद।
अद्यतन तो मैं आशा करती हूं कि प्रलेखन अधूरा है, क्योंकि यह सीमा रेखा भी बेहद कम है, लेकिन मैं सेटिंग्स के बारे में थोड़ा सीखा है। यह पता चला है कि, इंजेक्शन स्क्रिप्ट से, SafariExtensionSettings
ऑब्जेक्ट उपलब्ध नहीं है। इंजेक्शन स्क्रिप्ट्स के पास केवल SafariContentExtension
ऑब्जेक्ट तक पहुंच है (जो बिल्कुल उपयोगी नहीं है), लेकिन यह बिल्कुल उसी तरीके से उपनाम है (safari.extension.settings
) - बुरा विचार, आईएमओ। के रूप में injection script documentation में कहा गया है:
महत्वपूर्ण: यदि आप एक इंजेक्शन स्क्रिप्ट के भीतर से safari.extension का उपयोग करते हैं, तो आप SafariExtension वर्ग को संबोधित नहीं कर रहे हैं। आप SafariContentExtension क्लास को संबोधित कर रहे हैं।
आपको वैश्विक HTML फ़ाइल से बात करने के लिए मैसेजिंग सिस्टम का उपयोग करना होगा जिसमें सेटिंग्स तक पहुंच है। यह एक प्रकार का लूपी है, लेकिन मेरे पास global.html
फ़ाइल पर एक संदेश भेजा जा रहा है जो सेटिंग्स को पुनर्प्राप्त करता है और जैसे ही मुझे पता चलता है कि ऐसा करने के बारे में मुझे पता चल जाता है कि मैं अपनी इंजेक्शन स्क्रिप्ट पर एक संदेश वापस भेजूंगा।
जब से मैं दस्तावेज़ लोड होने से पहले अपने काम के सभी कर रहा हूँ, विधियों मैं संदेश वापस मेरे पास नहीं है कि एक पेज वस्तु पर भरोसा करते हैं भेजने के लिए मिल गया है के सभी।
ऊपर दिए गए अपडेट पर नज़र डालें। अब मुझे पता है कि आप सेटिंग्स तक नहीं पहुंच सकते हैं और यह भी संकेत दिया है कि उन्हें कैसे प्राप्त किया जाए (भले ही यह मेरे लिए अन्य कारणों से काम नहीं कर रहा हो)। –
मुझे अभी मेरी समस्या का समाधान मिला है, यह आपके लिए या किसी अन्य समस्या के लिए ऊपर पोस्ट किया गया है। शायद आप इसे अपने मामले के लिए अनुकूलित कर सकते हैं! – Mars
अद्यतन के लिए धन्यवाद। मेरे मामले में, सभी काम 'प्रीलोड' किया जा रहा है, इसलिए पेज ऑब्जेक्ट अनिर्धारित है जिसका अर्थ यह है कि 'प्रेषण संदेश() 'विधि उपलब्ध नहीं है। मैं अभी भी इसके लिए एक कामकाज की तलाश में हूं। –