2010-06-28 20 views
5

मैं एक तैयार वातावरण में काम कर रहा हूं, और यह बताने की कोशिश कर रहा हूं कि जिस फ्रेम पर कुछ जावास्क्रिप्ट कोड निष्पादित होते हैं वह शीर्ष फ्रेम (जिसमें शेष होता है) होता है।कैसे बताएं कि वर्तमान फ्रेम माता-पिता है या नहीं?

अब तक मैं

window.parent != null 

साथ यह जाँच करने के लिए कोशिश कर रहा था लेकिन यह हमेशा झूठे देता है, इस सरल उदाहरण की तरह।

<html> 
<head> 
    <script> 
    alert(parent == null); 
    </script> 
</head> 

<body> 
    <h1>OH YEAH!</h1> 
</body> 
</html> 

क्या ऐसा करने का कोई तरीका है? मुझे पोर्टेबल नहीं होना चाहिए, अभी मैं आईई 6 समाधान की तलाश में हूं।

उत्तर

7

मैं इस पीडीएफ पाया बहुत उपयोगी हो करने के लिए:, http://seclab.stanford.edu/websec/framebusting/framebust.pdf

संक्षेप में अगर यह पढ़ने के लिए बहुत लंबा है, यह है कि क्या वे अंततः का प्रस्ताव है:

<style> 
    html { display :none; } 
</style> 
<script> 
if(self==top){ 
    document.documentElement.style.display = 'block'; 
}else{ 
top.location=self.location; 
} 
</script> 

आप कई अन्य साधन मिल जाएगा इस पीडीएफ में ऐसा करने के लिए और प्रत्येक साधन 'समर्थक और विपक्ष। जाहिर है, जावास्क्रिप्ट के बिना ब्राउज़र पर, यह समाधान दर्दनाक हो सकता है;)

1

आप top.frames.length == 0 देख सकते हैं या नहीं।

5
self === top 

शीर्षतम फ़्रेमसेट में निष्पादित होने पर सत्य वापस लौटना चाहिए, अन्यथा झूठी।

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