iframe

2010-12-04 18 views
15

के भीतर पृष्ठ अलग-अलग दिखाएं (सीएसएस) यदि शीर्षक कहता है कि "iframe के भीतर पृष्ठ को अलग-अलग दिखाएं (सीएसएस)" के रूप में कोई तरीका है। यदि साइट आईफ्रेम के भीतर है तो मैं संभावित रूप से एक अलग सीएसएस स्टाइलशीट का उपयोग करने के लिए एक jQuery/जावास्क्रिप्ट विधि की तलाश में हूं। कोई विचार?iframe

उत्तर

29

यदि आप top window नहीं हैं तो आप inject एक अलग स्टाइलशीट कर सकते हैं।

if (window.top!=window.self) 
{ 
    // In a Frame or IFrame 
} 
else 
{ 
    // Not in a frame 
} 
+0

आपको बहुत धन्यवाद! – ThomasReggi

+1

क्या इसे पूरा करने के लिए पूरी तरह से सीएसएस विधि है या जावास्क्रिप्ट के माध्यम से 'window.top' की जांच कर रहा है? – iX3

+0

@ iX3 - ऐसा नहीं है। सीएसएस फ्रेम के बारे में पता नहीं है। – Oded

4
if(self != top) { 
    headTag = document.getElementsByTagName("head")[0].innerHTML; 
    var frameCSS = headTag + '<style type="text/css">**insert CSS here**</style>'; 
    document.getElementsByTagName('head')[0].innerHTML = frameCSS; 
} 

तो पेज केवल पेज प्रदर्शित किया जा रहा है, ऊपर, माता-पिता, स्वयं और खिड़की बराबर हो जाएगा। यदि पृष्ठ एक फ्रेमसेट के भीतर आयोजित किया जा रहा है, तो स्वयं और शीर्ष बराबर नहीं होंगे। यदि पृष्ठ फ़्रेमसेट वाला पृष्ठ है, और यह स्वयं फ़्रेमसेट के भीतर नहीं रखा जा रहा है, तो स्वयं और शीर्ष बराबर होंगे।

10

एक नई स्टाइलशीट इंजेक्ट करने की बजाय, मैं body पर एक सीएसएस कक्षा जोड़ने का सुझाव दूंगा।

jQuery उदाहरण:

$(function() { 
    if (window.self != window.top) { 
    $(document.body).addClass("in-iframe"); 
    } 
}); 

अब आप अलग तरह

.in-iframe p { 
    background: purple; 
} 
+0

^यह। एक पूरी नई सीएसएस फ़ाइल के साथ जाकर शायद अधिकांश व्यावहारिक उपयोगों के लिए अधिक है। –

3

बातें शैली दे सकते हैं यहाँ एक तेज और डिजाइनर अनुकूल वेनिला जे एस का उपयोग कर दृष्टिकोण है। जेएस की एक पंक्ति और देखो और महसूस सीएसएस/एसएएसएस/कम से नियंत्रित किया जा सकता है।

किसी भी सीएसएस या जे एस लोड होने से पहले head तत्व के भीतर इस स्थान:

// Sets the class of the HTML element using vanilla JavaScript 
document.documentElement.className += (window.self == window.top ? " top" : " framed"); 

फिर अपने सीएसएस/एस.ए.एस.एस./कम समय में आप, छिपा कर सकते हैं शो, और आधारित tweak जिस पर वर्ग लागू किया गया था।

/* Hide site navigation when in an iframe */ 
html.framed .site-nav, 
html.framed .site-footer { 
    display: none; 
} 

पीएसए: X-Frame-Options का लाभ लेने का अपहरण कर लिया जा रहा से अपनी कड़ी मेहनत रखने के लिए विचार करें।

+0

यह सिर्फ साफ, साफ और आत्म व्याख्यात्मक है, मुझे यह पसंद है! –