2011-01-25 13 views
10

के भीतर ओरिएंटेशन परिवर्तन का पता लगाएं तो मेरे पास एक .jsp पृष्ठ है जिसमें इसमें आईफ़्रेम है। इस आईफ्रेम की सामग्री एक अलग डोमेन पर होस्ट की जाती है। एक मोबाइल डिवाइस पर, मैं इस आईफ्रेम को अभिविन्यास परिवर्तन का पता लगाने और उसके अनुसार सामग्री के आयामों को बदलने के लिए देख रहा हूं।क्रॉस-डोमेन iframe

क्या इस आईफ्रेम के भीतर संग्रहीत सामग्री में इवेंट श्रोता जोड़ने का कोई तरीका है जो अभिविन्यास परिवर्तन का पता लगाएगा?

यदि यह सामग्री आईफ्रेम के भीतर नहीं थी, और इसके बजाय सीधे एक्सेस किया गया था, तो एक कॉल: window.addEventListener ('अभिविन्यास बदलें', फ़ंक्शन ToBeCalled, false); सफलतापूर्वक एक अभिविन्यास परिवर्तन पकड़ता है और उपयुक्त फ़ंक्शन को कॉल करता है। हालांकि, मैं इसे iframe के भीतर से काम करने के लिए प्रतीत नहीं कर सकता। मैंने parent.addEventListener, parent.window.addEventListener, top.addEventListener, आदि का प्रयास किया है लेकिन इसका कोई फायदा नहीं हुआ है।

जो मैंने पढ़ा है उससे यह लगता है कि यह एक क्रॉस-डोमेन कॉल है क्योंकि मेरे पास बहुत सीमित पैरेंट कार्यक्षमता उपलब्ध है, क्या मैं असफल होने के लिए बर्बाद हूं?

किसी भी मदद की सराहना की जाएगी। धन्यवाद!

उत्तर

13

यदि आपके पास मूल विंडो का कोड है तो आप इसे हल करने के लिए क्रॉस दस्तावेज़ मैसेज का उपयोग कर सकते हैं। आप ओरिएंट विंडो से ओरिएंट को ओरिएंट भेज सकते हैं। यह क्रॉस डोमेन परिदृश्य में भी काम करना चाहिए। मैंने आईफोन 4.3 और एंड्रॉइड 2.2 पर इसका परीक्षण किया।

माता पिता विंडो में: उन्मुखीकरण परिवर्तन के लिए रजिस्टर और iframe

window.addEventListener("orientationchange", function(){ 
       var iframe = document.getElementById("youriframe").contentWindow; 
       iframe.postMessage({ 
        orientation: window.orientation 
       }, 'http://the.domain.of.the.iframe.com'); 
}, false) 

में स्थानान्तरित iframe में: उन्मुखीकरण परिवर्तन करने के लिए माता पिता से

window.addEventListener("message", function(e){ 
      var newOrientationValue = e.data.orientation; 
      alert(newOrientationValue); // <--- DO your own logic HERE 
}, false) 

इस चेक अधिक जानकारी के लिए बाहर की सदस्यता लें : http://html5demos.com/postmessage2