2011-02-04 20 views
6

मुझे यह जानने की जरूरत है कि दस्तावेज़ तत्व पृष्ठ का रूट नोड है या नहीं।जांचें कि दस्तावेज़ रूट नोड

<html> <-- ROOT Node 
    <head></head> 
    <body> 
     <iframe> 
     <html>...</html> <-- other document 
     </iframe> 
     <iframe> 
     <html>...</html> <-- other document 
     </iframe> 
    </body> 
</html> 

जावास्क्रिप्ट कि iframe 1 या 2 में क्रियान्वित किया जाता है, तो अपने दस्तावेज़ नोड रूट नोड है पता होना चाहिए: उदाहरण के लिए।

आशा है कि आप मेरी मदद कर सकते हैं।

उत्तर

11

आप top के साथ ऐसा करने में सक्षम होना चाहिए: window.top का उपयोग करके

if (window.top.document === window.document) { 
    // we're in the outermost window 
} 
+0

+1 का चयन करेंगे जो है, लेकिन 'top.document === खिड़की .document' पर्याप्त है, 'window.top'' शीर्ष ' –

+0

@ मार्टिन ट्रू करने का एक धीमा तरीका है, लेकिन मैं स्पष्ट होना पसंद करता हूं। मैं एक परिस्थिति की कल्पना कर सकता हूं जहां मैं एक चर 'शीर्ष' नाम दूंगा। – lonesomeday

+0

ठीक है आप कोशिश कर सकते हैं, लेकिन अधिकांश ब्राउज़रों में, यदि आप 'शीर्ष' को मान असाइन करने का प्रयास करते हैं तो इसे या तो अनदेखा किया जाएगा या एक त्रुटि फेंक दी जाएगी। इसके अलावा, खिड़की सिर्फ एक छद्म वस्तु है जो उस फ्रेम के वैश्विक नामस्थान को इंगित करती है, इसलिए जब आप इसे कॉल करते हैं तो स्पष्ट होने के कारण, फ्रीवे का उपयोग करने के बजाए दर्शनीय स्थलों की तरह, बस लंबा रास्ता तय करना है। –

0

मुझे संदेह है कि, एक अलग दस्तावेज की सामग्री दी गई है, वे सभी रूट नोड के रूप में वापस रिपोर्ट करेंगे। यह देखने के लिए बेहतर हो सकता है कि document.parent शून्य है या नहीं।

0
if (window == window.parent) { 
    alert("I'm not in a frame"); 
} 
0

अपने शीर्ष दस्तावेज़ में एक समारोह है कि रिटर्न यह rootNode है, फिर अपने iframe दस्तावेजों से इस फ़ंक्शन को कॉल करें संदर्भ:

अपने शीर्ष दस्तावेज़ में:

function getRootNode() 
{ 
//returns the rootNode 
} 

मैं n अपने iframe दस्तावेज:

var rootNode = window.top.document.getRootNode(); 
0

इस आजमा कर देखें:

if(currentnode.parentNode == null) { alert("is root node") } 

// जहां currentnode नोड आप

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