2011-09-06 11 views
9

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

असुरक्षित JavaScript URL http://samedomain:51700/irj/servlet/prt/portal/prtroot/CRMApp73.CRMOProxy साथ फ्रेम से URL http://samedomain:51700/irj/servlet/prt/portal/prtroot/CRMApp73.StoricoApp साथ फ्रेम पहुंचने का प्रयास करें। डोमेन, प्रोटोकॉल और बंदरगाहों का मिलान होना चाहिए।

मैं इस मुद्दे को कैसे हल कर सकता हूं? मैं 4 घंटे से Google द्वारा खोजता हूं। मुझे आशा है कि किसी के द्वारा मेरी सहायता की जा सकती है।

संपादित करें: कोड

यह आइफ्रेम पेज में जावास्क्रिप्ट है। यह जावास्क्रिप्ट एक मूल फ्रेम जावास्क्रिप्ट फ़ंक्शन "setUfficioPostale" को कॉल करता है। यह वह बिंदु है जहां क्रोम मुझे "असुरक्षित पहुंच ..." त्रुटि देता है।

<script> 
    window.parent.setUfficioPostale(map); 
</script> 

यह जमा करने के लिए मूल फ्रेम में जावास्क्रिप्ट है। यह छिपे हुए पैरा के साथ छिपे हुए फॉर्म को आईफ्रेम में लोड किए गए पृष्ठ पर भेजने के लिए है।

function onAltroUfficioClick(){ 
    document.getElementById("hiddenParams").submit(); 
    $('#framePosteMaps').show(); 
} 

यह मूल पृष्ठ में आईफ्रेम परिभाषा है।

<iframe id="framePosteMaps" scrolling="no" name="framePosteMaps"></iframe> 

यह आईफ्रेम पृष्ठ पर पैरामीटर भेजने के लिए लक्ष्य विशेषता वाला फ़ॉर्म है।

<form id="hiddenParams" target="framePosteMaps" action="http://samedomain:51700/irj/servlet/prt/portal/prtroot/TestFrameRC.SimPerProxy" method="POST"> 
    <input type="hidden" name="distanza" value="10"> 
    <input type="hidden" name="cliente" value="Retail"> 
    .................... 
</form> 
+0

क्या आप हमें कुछ कोड दिखा सकते हैं? – UpHelix

+0

हालांकि ऐसा लगता है कि यह आवश्यक नहीं होना चाहिए, शायद एक ही मूल्य के लिए माता-पिता और iframe दोनों में 'document.domain' को सेट करना इसे काम करने में झटका देगा? –

+0

नोटिस: यदि आपके samedomain 'foo.somedomain.com' और' bar.somedomain.com' हैं तो वे समान नहीं हैं। – c69

उत्तर

2

क्रोम आपको ऐसा करने की अनुमति नहीं देता है। Iframe से कोड मूल कोड तक नहीं पहुंच सकता है।

2

पहले, जांच बिल्कुल उसी तरह iframe की एसआरसी attr का उपयोग कर कि दोनों पृष्ठों संदर्भ दिया जा, मेरा मतलब है:

http://samedomain:51700/irj/ 
http://samedomain:51700/irj/ 

beacause यह संभव है, कि भले ही वे एक ही में चल रहे हैं

http://localhost:51700/irj/ 

और अन्य: मशीन, उन iFrames से एक की तरह कहा जाता है

http://MachineId:51700/irj/ 

या कोई अन्य संयोजन।

आप सभी आधुनिक ब्राउज़रों में डेवलपर टूल के साथ कोड का निरीक्षण करके इसे देख सकते हैं।

क्रोम आपको माता-पिता के फ़ंक्शन को कॉल करने की अनुमति देता है यदि वे एक ही डोमेन में हैं (मैं इसे रोज करता हूं), इसलिए कोई समस्या नहीं होनी चाहिए।

मैं बच्चों iFrames acces करने इस फ़ंक्शन का उपयोग:

var getIframe = function (id) { 
    if ($.browser.mozilla) return document.getElementById(id).contentWindow; 
    return window.frames[id]; 
}; 

और बस "parent.yourParentFunction()" आप माता-पिता में एक समारोह का उपयोग करना चाहते हैं।

चेक कि माता-पिता के समारोह खिड़की वस्तु (ग्लोबल नेम स्पेस)

कि :-)

+3

बस थोड़ा सा नोट: ब्राउज़र प्रकार/संस्करण के लिए परीक्षण करने के लिए यह एक अच्छा अभ्यास नहीं है। इसके बजाय सुविधा उपलब्धता के लिए परीक्षण! –

1

माता पिता फ्रेम एक document.domain मूल्य "samedomain" से अलग सेट कर सकता है के साथ गुड लक को सौंपा गया है । iframe js में document.domain प्रॉपर्टी को मूल फ्रेम में मान सेट पर अपडेट करें और इसे काम करना चाहिए।

+2

कृपया अपने उत्तर में कुछ उदाहरण कोड प्रदान करें। –

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