2009-07-03 12 views
6

मैं फ़ायरफ़ॉक्स पर एक इंटरनेट एक्सप्लोरर प्लगइन पर पोर्ट करने का प्रयास कर रहा हूं, लेकिन मुझे यकीन नहीं है कि मुझे क्या चाहिए इसकी तलाश करनी है।मैं सभी पेज तत्वों के लिए फ़ायरफ़ॉक्स में एक सामग्री कनवर्टर कैसे कार्यान्वित कर सकता हूं?

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

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

यदि प्राप्त सभी डेटा को फ़िल्टर करने का कोई तरीका है, तो शायद यह स्वीकार्य होगा, मैं हेडर को स्वयं पार्स कर सकता हूं।

धन्यवाद

उत्तर

3

मुझे लगता है कि मुझे जो चाहिए वह मुझे मिल सकता है। मैं इस लिंक पर आया था जिसका उपयोग HTTP कॉल का पता लगाने के लिए किया जाता है: http://blues.ath.cx/firekeeper/resources/http_tracer.html

किसी कारण से जावास्क्रिप्ट कार्यान्वयन के साथ कुछ समस्याएं प्रतीत होती हैं, और मैं इसे समझने के लिए जावास्क्रिप्ट गुरु नहीं हूं, लेकिन मैंने इसे लागू किया है यह सी ++ में और प्रारंभिक परिणाम बताते हैं कि मुझे अपनी आवश्यकताओं के लिए इसे संशोधित करने में सक्षम होना चाहिए।

असल में हम अपने स्वयं के कार्यान्वयन के साथ nsIHttpProtocolHandler सेवा को बदल रहे हैं, जो प्रारंभिक कार्यान्वयन का संदर्भ रखता है। जब सेवा में कोई कॉल किया जाता है, तो हम इसे सहेजे गए मूल कार्यान्वयन पर ही प्रॉक्सी करते हैं। फिर हम nsIHttpChannel और nsIStreamListener का अपना कार्यान्वयन प्रदान करते हैं जिसे हम प्रॉक्सी के रूप में भी उपयोग करते हैं।

फिर हम मूल हैंडलर को वापस कॉल की अधिकांश प्रॉक्सी प्रॉक्सी करते हैं। लेकिन ऑनडाटा उपलब्ध है, अंतर्निहित nsIStreamListener पर डेटा पास करने के बजाय, हम इसे nsIStorageStream का उपयोग करके सहेजते हैं। फिर ऑनस्टॉपरक्वैस्ट में, हम सभी डेटा प्राप्त करने के बाद, हम इसे डिकंप्रेस कर सकते हैं और फिर ऑनडाटा को मूल हैंडलर पर उपलब्ध कर सकते हैं, इसके बाद ऑनस्टॉपरक्वेट।

इसने अब तक कुछ छोटे सरल परीक्षणों पर काम किया है, लेकिन मुझे इसे और अधिक कठोर परीक्षणों के माध्यम से रखना होगा ... मुझे यह भी पता लगाना होगा कि क्या मैं HTTPS के साथ एक ही काम कर सकता हूं।

इस समय सबसे बड़ी समस्या यह है कि यह कुछ अजीब इंटरफेस पर निर्भर करता है जैसे कि nsIHttpChannelInternal। जहां तक ​​मैं कह सकता हूं, मेरी सहायता नहीं की जा सकती है, और मेरी संस्करण संगतता आवश्यकताएं बहुत छोटी हैं, इसलिए यदि मुझे करना है तो मैं इसके साथ रह सकता हूं।

इस बीच, अगर किसी को भी किसी भी अन्य सुझाव है, मैं सभी कान हूँ: डी

+0

मैं एक विस्तार मैं पर काम कर रहा हूँ के लिए इस तरह की एक तकनीक का उपयोग किया गया है - लेकिन यह में काम करना बंद कर दिया है FF17। क्या आपने इस पर काम किया है? – Daniel

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

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