2011-11-17 17 views
7

में लोड किए गए आईफ्रेम में सीएसएस और जावास्क्रिप्ट को इंजेक्ट कैसे कर सकता हूं। मेरे पास क्रोम एक्सटेंशन में एक आईफ्रेम है जो वेबसाइट लोड करता है, मैं वेबसाइट में सीएसएस और जावास्क्रिप्ट इंजेक्ट करना चाहता हूं, लेकिन केवल जब यह मेरे लोड हो एक्सटेंशन iframe (इसलिए जब उपयोगकर्ता सामान्य रूप से साइट पर ब्राउज़ करता है तो यह प्रभावित नहीं होता है)।मैं क्रोम एक्सटेंशन

मुझे आश्चर्य हुआ कि क्रोम एक्सटेंशन में क्रॉस-डोमेन सुरक्षा नीतियां लागू होती हैं जब वे आईफ्रेम के आंतरिक तक पहुंचने का प्रयास करते हैं, भले ही वे क्रॉस-डोमेन XHR अनुरोध कर सकें।

क्या ऐसा करने का कोई आसान तरीका है? हालांकि मैं executeScript का उपयोग करके इसे करने में सक्षम हो सकता हूं लेकिन इसके लिए एक टैब आईडी की आवश्यकता है।

उत्तर

2

यह जानने का एकमात्र तरीका है कि आप ifrmae में हैं या नहीं windowtop नहीं है।

if (window == top) { 
    // Not in iframe 
} 
else { 
    // In an iframe 
} 

आप केवल सामग्री स्क्रिप्ट के लिए ऐसा कर सकते हैं, स्टाइलशीट के लिए नहीं। मैं आमतौर पर सामग्री स्क्रिप्ट के भीतर क्या करता हूं, मैं जांचता हूं कि यह शीर्ष विंडो में नहीं है, और फिर स्क्रिप्ट जारी रखें, अन्यथा मैं इसे समाप्त कर देता हूं।

संक्षिप्त

  1. कि यूआरएल
  2. सामग्री स्क्रिप्ट में के लिए सामग्री स्क्रिप्ट सम्मिलित करें, अगर खिड़की संपत्ति की जांच, if (window != top) { loadContentScript() }
  3. जावास्क्रिप्ट में सीएसएस बनाएं यदि आप के बारे में भी चिंतित हैं यह प्रभावित करता है। यदि आप अद्वितीय आईडी का उपयोग नहीं करते हैं तो आपको नहीं करना चाहिए।

आशा है कि मदद की है, मैं इसे अपने कुछ विस्तार के लिए करता हूं।

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