2013-06-13 11 views
8

मेरे पास कैलेंडर है और जब मैं <td> पर क्लिक करता हूं, तो पॉप-अप विंडो दिखाई देती है ताकि आप अपनी चुनी तिथि के लिए अपना शाम बना सकें। मैं एक सुविधा जोड़ना चाहता हूँ।बच्चे विंडो से पैरेंट विंडो की जावास्क्रिप्ट को कॉल करें

जब उपयोगकर्ता ईवेंट बनाने को समाप्त करता है, तो मैं मूल पृष्ठ पर एक जावास्क्रिप्ट अनुरोध भेजना चाहता हूं ताकि मैं AJAX का उपयोग कर कैलेंडर रीफ्रेश कर सकूं। असल में, मैं बच्चे से एक फ़ंक्शन कॉल करना चाहता हूं, लेकिन फ़ंक्शन पैरेंट पेज पर है।

Google पर, मुझे केवल एक स्क्रिप्ट मिली जो मूल विंडो को रीफ्रेश कर सकती है - "पेरेंट कॉलबैक" के बारे में कुछ भी नहीं। ☹ क्या यह भी संभव है?

पीएस जवाब शुद्ध जेएस या jQuery हो सकता है, इससे कोई फर्क नहीं पड़ता। मैं इस बीच में देखता रहूंगा।

+0

@Neal डेविड ने कहा कि वह "पैरेंट कॉलबैक" जैसी चीजों के लिए गुगल हो गया है, जो मुझे लगता है, अगर उसकी खोज पूरी तरह से थी, तो उचित प्रयास है। ध्यान दें कि, जहां तक ​​मैं कह सकता हूं, डेविड कैलेंडर को अद्यतन और प्रदर्शित करने के लिए पूर्ण कोड मांग नहीं रहा है। वह बस अपनी मूल विंडो में एक फ़ंक्शन कॉल करने के लिए पॉप-अप विंडो के लिए एक सामान्य तरीका मांग रहा है। –

+0

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

+0

इस सवाल का बचाव करने के लिए आप दोनों धन्यवाद। मैं बस "कैसे-कैसे" पूछ रहा हूं लेकिन कोड की कोई ज़रूरत नहीं है ... और हाँ, मैंने कुछ शोध किए और मुझे पता चला कि टीआई कैसे पैरेंट विंडो को दोबारा रिफ्रैच करता है। मुझे कुछ नहीं मिला है। अब मुझे उम्मीद है कि भविष्य में यह प्रश्न Google में शीर्ष खोज हो सकता है और जरूरतों में अधिक लोगों की सहायता कर सकता है। –

उत्तर

13

जो आप खोज रहे हैं वह window का एक संदर्भ है जो पॉपअप विंडो खोला गया है। एक बार आपके पास हो जाने के बाद, आप उस विंडो में फ़ंक्शंस को कॉल कर सकते हैं, उस विंडो में वेरिएबल्स पढ़ और लिख सकते हैं, या यहां तक ​​कि अपने डोम में हेरफेर भी कर सकते हैं।

उस संदर्भ को opener कहा जाता है। यह आपको वर्तमान विंडो खोलने वाली विंडो के लिए window ऑब्जेक्ट देता है। उदाहरण के लिए, अगर आप इस तरह मूल विंडो में एक समारोह है:

function updateMe(data) { 
    alert(data); 
} 

तो पॉप अप विंडो में आप इसे इस तरह कह सकते हैं:

opener.updateMe('Hello!'); 

स्वाभाविक रूप से, आप यह सुनिश्चित करें कि बनाने की जरूरत है updateMe() मूल पृष्ठ में एक वैश्विक कार्य है। या यदि आपके पास मूल पृष्ठ में कुछ ऑब्जेक्ट है और updateMe() उस ऑब्जेक्ट का एक तरीका है, तो आप तब भी ऐसा कर सकते हैं जब तक ऑब्जेक्ट वैश्विक हो। जैसे मेजबान पेज में:

var myObject = { 
    updateMe: function(data) { 
     alert(data); 
    } 
}; 

तो पॉप-अप में तुम कर सकते हो:

opener.myObject.updateMe('Hello!'); 

असल में, जब तक कि आप में window.whatever साथ वस्तु या मूल पृष्ठ में कार्य करने के लिए मिल सकता है, तो पॉपअप आप बस इसे opener.whatever में बदल सकते हैं।

+1

एमडीएन ['window.opener' के लिए प्रलेखन] (https://developer.mozilla.org/en-US/docs/Web/API/window.opener) –

+0

धन्यवाद। जो मैं देखता हूं, वही है जो मैं ढूंढ रहा था। मैं कल काम पर कोशिश करूंगा! –

+0

यह एक आकर्षण की तरह काम करता है! बहुत बहुत धन्यवाद, मैंने आज कुछ सीख लिया है! –

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