Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में iframe से पैरेंट विंडो फंक्शन कैसे कॉल करें?

window.top या window.parent का उपयोग

एक iframe के अंदर से पैरेंट विंडो के फंक्शन को कॉल करने के लिए window.top (सबसे टॉप विंडो) या window.parent (तत्काल पैरेंट) का उपयोग करें।

उदाहरण

<!DOCTYPE html> 
<html> 
  <body> 
    <script> 
      // पैरेंट विंडो में फंक्शन
      function display() {
        alert("Hello World from Parent!");
      }
    </script> 
    
    <iframe id="myFrame" srcdoc="
      <a onclick='window.top.display();' href='#'>
        Click to call parent function
      </a>
    "></iframe> 
  </body> 
</html>

window.top vs window.parent

प्रॉपर्टी विवरण
window.top सबसे बाहरी/टॉप-मोस्ट विंडो रेफरेंस (नेस्टेड iframes के पार)
window.parent तत्काल पैरेंट विंडो रेफरेंस
window.self वर्तमान विंडो/iframe (डिफ़ॉल्ट)

क्रॉस-ओरिजन प्रतिबंध

महत्वपूर्ण: यह केवल तभी काम करता है जब iframe और पैरेंट सेम ओरिजन (सेम डोमेन, प्रोटोकॉल, पोर्ट) के हों। क्रॉस-ओरिजन स्थितियों के लिए postMessage() API का उपयोग करें:

पैरेंट विंडो (रिसीवर)

window.addEventListener('message', function(event) {
  // सुरक्षा: ओरिजन वेरिफाई करें
  if (event.origin !== 'https://trusted-child.com') return;
  
  if (event.data.type === 'CALL_FUNCTION') {
    display();  // पैरेंट फंक्शन कॉल करें
  }
});

चाइल्ड iframe (सेंडर)

// पैरेंट को संदेश भेजें
window.parent.postMessage({
  type: 'CALL_FUNCTION',
  payload: { /* डेटा */ }
}, 'https://parent-domain.com');

सुरक्षा नोट

हमेशा event.origin को वेरिफाई करें ताकि क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों से बचा जा सके।

  1. जावास्क्रिप्ट फंक्शन से ऑब्जेक्ट कैसे रिटर्न करें? जावास्क्रिप्ट फंक्शन से ऑब्जेक्ट कैसे रिटर्न करें?

    जावास्क्रिप्ट फंक्शन से ऑब्जेक्ट रिटर्न करने के लिए, return स्टेटमेंट का उपयोग this कीवर्ड के साथ करें।उदाहरणजावास्क्रिप्ट फंक्शन से ऑब्जेक्ट रिटर्न करना सीखने के लिए निम्नलिखित कोड चलाएं:<html>    <head>       <script>          var

  1. - JavaScript में एसिंक्रोनस कॉल से रिस्पॉन्स कैसे लौटाएं?

    JavaScript में एसिंक्रोनस कॉल से रिस्पॉन्स लौटाने के कई तरीके हैं। आइए पहले समस्या को समझते हैं। मान लीजिए आपके पास foo नाम का एक फ़ंक्शन है जो एसिंक्रोनस है और कुछ समय बाद डेटा देगा। यह इसे 2 तरीकों से कर सकता है। यह या तो एक कॉलबैक स्वीकार कर सकता है जिसे यह डेटा के साथ कॉल करेगा जब यह एक्ज़िक्यू

  1. - C++ में डेराइव्ड क्लास फंक्शन से पेरेंट क्लास फंक्शन कैसे कॉल करें?

    डेराइव्ड क्लास फंक्शन से पेरेंट क्लास फंक्शन कॉल करने का एक उदाहरण निम्नलिखित है। उदाहरण #include <bits/stdc++.h> using namespace std; class p1 {    public:    void first() {       cout << "\nपेरेंट क्लास p1 फंक्शन कॉल किया गया।";