2011-06-07 6 views
6

तो मैं एक चर राशि के लिए एक iframe से JavaScript वैरिएबल पारित:तो जैसे माता-पिता फ्रेम मेरी iframe में

<script> 
var zipphone = "<?= $phone ?>"; 
</script> 

अब मैं के बाद आइफ्रेम लोड किया जाता है माता पिता फ्रेम करने के लिए है कि चर पास करना चाहते हैं। ऐसा करने का सबसे आसान तरीका क्या है?

+0

iframe पर एक अधिभार फ़ंक्शन जोड़ने के बारे में कैसे? – VirtualTroll

उत्तर

10

पृष्ठों दोनों ही डोमेन में हैं, तो आप माता-पिता खिड़की के एक समारोह कह सकते हैं:,

window.parent.zipPhoneCallback(zipphone); 

माता पिता विंडो में आप इस तरह एक समारोह को परिभाषित कर सकते हैं:

function zipPhoneCallback(zipphone) { 
    ((console&&console.log)||alert)("zipphone = " + zipphone); 
} 
+0

मैं इसे काम नहीं कर सकता। क्या आप आगे समझा सकते हैं? साथ ही, अगर मैं iframe लोड होने के बाद तक इसे तब तक कैसे रोकूं। कारण मैं पूछता हूं क्योंकि जब तक पैरेंट फ्रेम पर कोई फॉर्म सबमिट नहीं किया जाता है तब तक मैं आईफ्रेम लोड नहीं करता हूं। – zach

+1

@zach: मेरे लिए ठीक काम करता है। [यहां एक और ठोस उदाहरण है।] (Http://jsfiddle.net/P2tyb/) वैसे, आप अपने प्रश्नों के माध्यम से जाना चाहेंगे, और यदि कोई संतोषजनक उत्तर है, तो खोखले चेक पर क्लिक करके इसे उत्तर के रूप में चिह्नित करें इसके बगल में निशान, जिस बिंदु पर यह हरा हो जाएगा। – icktoofay

2

सावधान रहें a Chrome browser issue with addressing variables from webpages to or from IFRAMES. यह समस्या ऑफ़लाइन परीक्षण में दिखाई देती है।

कि एक तरफ, आपके ब्राउज़र संभालने वास्तव में जावास्क्रिप्ट की बुनियादी कार्यों को लागू करता है, तो आप window.myiframename.zipphone

<IFRAME NAME="myiframename" SRC="myzipphoneiframefile.htm" .... 

<script type="text/javascript"> 
<!-- 
// then whatever you do with your variable 
// read it 
var z = window.myiframename.zipphone; 
// write to it 
window.myiframename.zipphone = "...."; 

और इतने पर का उपयोग कर अपने मुख्य वेबपेज से अपने चर संबोधित करते हैं।

उदाहरण।

DOC1.HTM सामग्री -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<title>DOC1.HTM</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
</head> 
<body bgcolor=pink> 

<h1>DOC1.HTM</h1> 

<iframe name="iframename" src="doc2.htm"></iframe> 
<p> 
<br /> 
<a href="#" onclick="alert('The value of the variable test_var set by a script in DOC2.HTM embedded in the DOC1.HTM page by an iframe named IFRAMENAME as read from a script running in DOC1.HTM appears to be - ' + window.iframename.test_var);return false;">check variable</a> 
</p> 

</body> 
</html> 

DOC2.HTM सामग्री -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<title>DOC2.HTM</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
</head> 

<body bgcolor=red> 

<script type="text/javascript"> 

var test_var="testing, testing . . ."; 

</script> 


<h1>DOC2.HTM</h1> 
</body> 
</html> 

कि खूबसूरती से भी इंटरनेट एक्सप्लोरर के पुराने संस्करणों के साथ काम करता है, लेकिन यह प्रयास करते हुए क्रोम और window.iframename के साथ ऑफ़लाइन परीक्षण Chrome समस्या के कारण .test_var अपरिभाषित प्रतीत होता है।

वैसे भी, क्रोम के भविष्य के संस्करणों को ठीक करने के लिए देखें क्योंकि यह Google के चेहरे पर बहुत अधिक अंडे है जबकि वे नहीं हैं।

क्रोम ऑफ़लाइन परीक्षण में इस समस्या के लिए मेरे पास एक कार्य-आसपास है।

मदद के लिए वेबमास्टरवर्ल्ड पर लुसी 24 के लिए धन्यवाद। http://www.webmasterworld.com/google_chrome/4689258.htm#msg4689342

क्रोम के साथ यह समस्या तब पैदा हुआ जब मेरी जावास्क्रिप्ट लाइन बंद परीक्षण किया गया था जा रहा और फ़ाइलों doc1.htm और doc2.htm मेरे पीसी पर एक ही फ़ोल्डर में हैं।

एक फ़ोल्डर है, जो Windows इंटरनेट सेवा प्रबंधक का उपयोग कर रन, जहां मैं अपने सर्वर साइड php कार्यक्रमों का परीक्षण करने के doc1.htm & doc2.htm फ़ाइलों को स्थानांतरित करने का मतलब है मैं http का उपयोग करके फ़ाइलें पता कर सकते हैं:// स्थानीय होस्ट पते और बिंगो, क्रोम व्यवहार करता है क्योंकि इसे ऑफ़लाइन मोड में व्यवहार करना चाहिए था।

यह क्रोम के जावास्क्रिप्ट के लिए मेरी राय में "वैध" नहीं है, जो कि उसी ऑफ़लाइन फ़ोल्डर में फ़ाइलों को सीधे संबोधित करने में सक्षम नहीं है।

जब आप अपने पीसी पर अपनी जावास्क्रिप्ट फाइलें चला रहे हैं तो बिल्कुल कोई सुरक्षा समस्या नहीं है। या यदि क्रोम एक सुरक्षा सेटिंग प्रदान करना चाहता था जो ऑफ़लाइन IFRAME चर स्कॉइंग को अनुमति या अस्वीकृत करता है तो ठीक है, यह ठीक होगा।

त्रुटि संदेश बिल्कुल स्पष्ट नहीं है मैं सबमिट करता हूं और लुसी 24 ने इसका अर्थ समझने के लिए अच्छा किया।

यदि इंटरनेट एक्सप्लोरर और फ़ायरफ़ॉक्स आदि आपको अपने जावास्क्रिप्ट को ऑफ़लाइन परीक्षण करने की अनुमति देता है तो क्रोम क्यों नहीं?

तो अच्छी तरह से लुसी 24 किया। क्रोम इतना अच्छा नहीं किया।

+0

अच्छा बिंदु +1 योग्य! – Alboz