2012-08-04 8 views
11

दोनों मुख्य विंडो और आईफ्रेम एक ही डोमेन पर हैं, लेकिन मैं जो हासिल करना चाहता हूं वह है कि आईफ्रेम का उपयोग केवल उस आईफ्रेम के अंदर जेएस का उपयोग करके अपनी सामग्री को फिट करने के लिए करें।क्या यह संभव है कि iframe मुख्य विंडो से सहायता के बिना खुद का आकार बदल जाए?

मुझे मुख्य विंडो द्वारा निर्दिष्ट आईफ्रेम की आईडी भी नहीं पता है। और मैं इसके लिए jquery या किसी अन्य ढांचे का उपयोग नहीं करना चाहता।

उत्तर

12

आप माता-पिता विंडो में iframe की id जानने के बिना भी यह कर सकते हैं:

window.frameElement.style.width = iframeContentWidth + 'px'; 
window.frameElement.style.height = iframeContentHeight + 'px'; 

MDN पर frameElement देखें।

संपादित

शायद ज़रुरत पड़े iframe एक कंटेनर तत्व है जो आकार तय किया है और overflow: hidden आप कुछ इस तरह कर सकते हैं में होना होता है: मान लें कि आप में केवल 1 IFRAME है

function resizeIframe (iframeContentWidth, iframeContentHeight) { 
    var container = window.frameElement.parentElement; 
    if (container != parent.document.body) { 
     container.style.width = iframeContentWidth + 'px'; 
     container.style.height = iframeContentHeight + 'px'; 
    } 
    window.frameElement.style.width = iframeContentWidth + 'px'; 
    window.frameElement.style.height = iframeContentHeight + 'px'; 
    return; 
} 
0

आपकी तरह की मूल सामग्री के लिए, yes you can

ऊपर सवाल पर गैरी के जवाब से उधार लिए:

iframe में, window.parent माता पिता दस्तावेज़, नहीं दस्तावेज़ वस्तु के ही वैश्विक वस्तु को दर्शाता है। मेरा मानना ​​है कि आप उपयोग करने के लिए parent.document.getElementById

की आवश्यकता होगी

आइफ्रेम parent.document का उपयोग कर एक्सेस करने की कोशिश, और देखें कि क्या इससे आपकी समस्या हल करती है।

0

IFRAME के ​​दस्तावेज़ की जावास्क्रिप्ट से मुख्य विंडो, आप कुछ ऐसा कर सकते हैं:

function getMySelf() 
{ 
    return (window.parent.document.getElementsByTagName("iframe"))[0]; 
} 

var myself = getMySelf(); 
myself.style.width = whateverWidth; 
myself.style.height = whateverHeight; 
संबंधित मुद्दे