2009-10-02 11 views
7

तो मुझे पता है कि अगर मैं एक पृष्ठ समान डोमेन मैं ब्राउज़र नीति के माध्यम से कि iframe के डोम उपयोग नहीं कर सकते पर नहीं है के लिए एक iframe शामिल हैं, लेकिन एक पेज एक iframe में है कि मूल दस्तावेज़ एक्सेस के किसी भी प्रकार कर सकते हैं?क्या आईफ्रेम पेज बताए जा सकते हैं जब वे इफ्रैम होते हैं?

  1. एम्बेडेड पेज बता सकते हैं कि यह माता पिता खिड़की नहीं है, एक या तो साइटों को अन-आइफ्रेम करने योग्य तो हैं बना सकते हैं:

    विशिष्ट रूप से मैं विचारों कि इस प्रश्न पर निर्भर कर रहे हैं करने के लिए है कि अगर पृष्ठ का पता लगाया जाता है तो यह एक "जाने के लिए" पृष्ठ में बदल जाता है या आप इसे केवल-iframe-able (पृष्ठों के लिए सर्वर-साइड स्क्रिप्ट के समान) बना सकते हैं, जो कि केवल शामिल होने के लिए हैं) पृष्ठ जब इसे इफ्रैम नहीं किया जाता है तो उसे "जाओ दूर" पृष्ठ मिलेगा।

  2. यदि इफ्रैमड पेज में कुछ स्वतंत्रताएं हैं जो मूल विंडो नहीं करती हैं, तो यह मूल विंडो की स्टाइलशीट का अनुरोध कर सकती है और इसे स्टाइलशीट पर सेट कर सकती है, इस प्रकार साइट को मूल दस्तावेज़ के साथ एकीकृत कर सकती है। (बेशक, तो मैं सिर्फ अपनी स्टाइलशीट को आइफ्राम साइट से अधिक संबंधित कर सकता हूं, यह जानकर कि यह ऐसा करेगा, लेकिन मुझे इसे किसी समस्या के रूप में नहीं देखा जाता है)।

कोई भी जानता है?

उत्तर

11
साथ # 1, हाँ, आप बता सकते हैं के संबंध

अगर आप कुछ सरल जावास्क्रिप्ट का उपयोग कर फंसाया जा रहा है:

<script type="text/javascript"> 
if (self != top) 
{ 
    // Framed! 
} 
</script> 

# 2 के बारे में मैं क्या आप "शीर्ष" उपयोग करके कर सकते यकीन नहीं है परिवर्तनीय, लेकिन मुझे पता है कि आप इसका स्थान बदल सकते हैं (इसलिए यदि आपकी साइट किसी अन्य साइट द्वारा बनाई गई है, तो आप अपने फ्रेम को शीर्ष फ्रेम का स्थान बदल सकते हैं - अनिवार्य रूप से उपयोगकर्ता को सीधे आपकी साइट पर रीडायरेक्ट कर सकते हैं)।

सुनिश्चित नहीं हैं और क्या आप या हालांकि शीर्ष फ्रेम करने के लिए ऐसा नहीं कर सकते कर सकते हैं - किसी और वहाँ में अधिक जानकारी प्रदान करने में सक्षम हो सकता है।

if(top.location.href != self.location){ 
//do redirection or display message 
} 

आप साइट टेम्पलेट के हिस्से के रूप में इस जावास्क्रिप्ट है और

+2

मैं खुदाई स्क्रिप्ट तत्व के अंदर एचटीएमएल टिप्पणियों सुझाव देते हैं, वहाँ नेटस्केप 2 के लिए खानपान में कोई बात नहीं। – Quentin

+0

@ डेविड - ठीक है, ठीक है, पुरानी आदतें मरती हैं :) –

1

इस पृष्ठ में जावास्क्रिप्ट निम्नलिखित एम्बेडिंग माध्यम से संभव है इस से पहले, और यह काम किया है:

<script type="text/javascript"> 
if (window.parent != null) 
{ 
    // Framed! 
} 
</script> 
0

मेरे द्वारा की गई IFrame में प्रदर्शित होने से किसी भी पेज को रोका जा सकता:

4

तुम भी फ्रेम का पता लगाने के बारे में this Coding Horror article में रुचि हो सकती। आप यह पता लगा सकते हैं कि आप तैयार किए गए हैं या नहीं, लेकिन ऐसे प्रतिवाद भी हैं जो "पैरेंट" पृष्ठ आपको उस पर कार्य करने से रोकने के लिए ले सकते हैं। लेख से उदाहरण: का पता लगाने और पुन: निर्देशित से

if (parent.frames.length > 0) { 
    top.location.replace(document.location); 
} 

रोकें एक फ्रेम:

का पता लगाने के लिए कि क्या आप तैयार किया गया है

var prevent_bust = 0 
    window.onbeforeunload = function() { prevent_bust++ } 
    setInterval(function() { 
    if (prevent_bust > 0) { 
     prevent_bust -= 2 
     window.top.location = 'http://server-which-responds-with-204.com' 
    } 
    }, 1) 
+2

पुरानी पोस्ट लेकिन सोचा कि मैं एक अवलोकन जोड़ूंगा।जबकि आपको आईफ्रेम से "बस्टिंग" से रोका जा सकता है, तो आप हमेशा अपने पेज की सामग्री को बदल सकते हैं जब कुछ त्रुटि संदेश प्रदर्शित करने के लिए इफ्रैमिंग का पता लगाया गया है जैसे "यह पृष्ठ अपहरण कर लिया गया है। आप इस पृष्ठ पर वास्तविक साइट पर नहीं जा रहे हैं आलेख पढ़ने के लिए कृपया xyz.com/... पर जाएं। " – Endophage

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

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