कहें कि आपके पास वैश्विक फ़ंक्शन अलर्ट 2 है:किसी अन्य विंडो के संदर्भ में जावास्क्रिप्ट विधि को कॉल करना संभव है?
function alert2(msg) {
window.alert(msg);
}
और आपके पास दूसरी विंडो ऑब्जेक्ट का संदर्भ भी है:
childWindow = window.open(myUrl);
अब आप बच्चे के संदर्भ में विंडो से अलर्ट 2 को कॉल करना चाहते हैं विन्डो:
alert2.call(childWindow, "does not work without this.window");
मुख्य विंडो में संवाद बॉक्स प्रकट होता है क्योंकि चेतावनी 2 के अंदर "विंडो" विंडो से बंधी है जिसमें इस विधि को परिभाषित किया गया था (पैरेंट विंडो)।
एक समाधान चेतावनी 2 को संशोधित करना है:
function alert2(msg) {
this.alert(msg);
}
क्या इस संशोधन के बिना ऐसा करना संभव है? इस तरह कुछ:
alert2.call(childWindow.parent, "no such thing as window.parent");
यह एक प्रदूषित उदाहरण है; childWindow.alert ("") वह नहीं है जिसे मैं ढूंढ रहा हूं!
से शुरू होने वाले jsfiddle पर मेरा स्रोत देखा और संशोधित किया जा सकता है
धन्यवाद ... अपने कोड समस्या की मेरी समझ को दर्शाते हैं। इस मामले में उपरोक्त func() में "बच्चे" या "पैरेंट" के अर्थ को प्रतिस्थापित करने का कोई तरीका नहीं है। इसी प्रकार फ़ंक्शन में "विंडो" के अर्थ को प्रतिस्थापित करने का कोई तरीका नहीं है क्योंकि "विंडो" को कैप्चर किया गया था जब चेतावनी 2 को "माता-पिता" और "बच्चे" के रूप में बनाया गया था जब func परिभाषित किया गया था। –