PDA

View Full Version : تغییر اندازه iframe



alirezador
دوشنبه 28 فروردین 1385, 17:08 عصر
سلام دوستان

دوستان چطوری میشه وقتی که در iframe یک صفحه باز میشه اندازه toolbar افقی یا عمودی را کنه و اندازه اونها را در widht و height اعمال کنه
یعنی وقتی طول صفحه زیاد بود به جای اینکه طول بار بهش اضافه کنه height را در iframe زیاد کنه
ممنون میشم اگه راهنماییم کنین

pooyanm
سه شنبه 29 فروردین 1385, 00:18 صبح
من نمی دونم شما این سوال ها رو از کجا پیدا می کنید، بابا یه خورده آسون تر بپرسید.

pooyanm
سه شنبه 29 فروردین 1385, 00:19 صبح
سلام علیرضا جان، کد زیر را اجرا کن در IE که مشکلی نداره.

<script>
function setSize(frame){
var b = frame.contentWindow.document.body;
var w = b.scrollWidth;
var h = b.scrollHeight;
if (w > 0) {
frame.width=w;
}
if (h > 0) {
frame.height=h;
}
}
</script>
<iframe src=test.html onload="this.contentWindow.top.setSize(this);"
onmouseenter="this.contentWindow.top.setSize(this);">
</iframe>

pooyanm
سه شنبه 29 فروردین 1385, 00:22 صبح
اگر موقع load شدن کار درست انجام نشه با ورود ماوس یا هر event دیگه ای که خواستی setSize را به کار ببر.

pooyanm
سه شنبه 29 فروردین 1385, 00:25 صبح
البته ممکنه در حد چند پیکسل این طرف اون طرف بیفته ولی فقط چند پیکسل.

pooyanm
سه شنبه 29 فروردین 1385, 00:27 صبح
البته حالا که پست های من از صد می گذره می خواستم بدونم که مدیر این بخش کیه و چه طوری مدیران بخش ها انتخاب می شن کسی می تونه کمک کنه؟؟

alirezador
سه شنبه 29 فروردین 1385, 13:20 عصر
آقا پویان خیلی ممنون از زحمتی که کشیدین من الان دیدم میرم امتحان کنم

alirezador
سه شنبه 29 فروردین 1385, 13:25 عصر
آقا پویان خیلی ممنون از لطفتون خیلی خوب کار کرد

pooyanm
سه شنبه 29 فروردین 1385, 18:01 عصر
خواهش می کنم.

sh.shad
شنبه 28 بهمن 1391, 13:33 عصر
با سلام

من هم از کد زیر استفاده کردم و برای IE خیلی خوب جواب میده؛ حتی اگر سورس فریم از یک سولوشن دیگر(different Domain ) باشد
ولی برای کروم و فایرفاکس فقط برای صفحاتی که در همان سولوشن هست جواب میده

function getElement(aID) {
return (document.getElementById) ? document.getElementById(aID) : document.all[aID];
}
function getIFrameDocument(aID) {
var rv = null;
var frame = getElement(aID);
if (frame.contentDocument) {
rv = frame.contentDocument;
}
else
{
rv = document.frames[aID].document;

}
}
return rv;
}

function adjustMyFrameSize() {

var frame = getElement('BodyFrame');
var frameDoc = getIFrameDocument('BodyFrame');
if (navigator.appName == "Microsoft Internet Explorer") {
frame.style.height = frameDoc.body.scrollHeight + "px";
}
else {

frame.style.height = frameDoc.body.offsetHeight+ "px";
}

<bodyonload="adjustMyFrameSize();">


کسی میدونه برای تغییر سایز فریم در differnte Domain چی کدی باید زد؟

sh.shad
دوشنبه 30 بهمن 1391, 13:57 عصر
لطفا یکی راهنمایی کنه؟

justplan
شنبه 16 شهریور 1392, 18:53 عصر
سلام علیرضا جان، کد زیر را اجرا کن در IE که مشکلی نداره.

<script>
function setSize(frame){
var b = frame.contentWindow.document.body;
var w = b.scrollWidth;
var h = b.scrollHeight;
if (w > 0) {
frame.width=w;
}
if (h > 0) {
frame.height=h;
}
}
</script>
<iframe src=test.html onload="this.contentWindow.top.setSize(this);"
onmouseenter="this.contentWindow.top.setSize(this);">
</iframe>

سلام به همه
آقا پویان خیلی عالی بود توی ie و موزیلا خوب جواب میده ولی کروم و اپرارو چی کار کنیم
تازه این کد توی اپرا خیلی جالبه حتما یه نگاه بندازید(اگر به گوشه های iframe بری اندازه ی iframe کوچیک میشه تا به جایی میرسه که اندازش 2px در 2px میشه)

بالاخره چون که 34% مردم دنیا از مرورگر کروم و 12% هم از اپرا استفاده می کنند از این رو این کد دارای اهمیت بیشتری خواهد شد زمانی که با تمام مرورگرها هم خوانی داشته باشد
بنده هم از شما یا دوستان دیگر ممنون میشوم این کار را به اتمام برسانند

justplan
شنبه 16 شهریور 1392, 22:47 عصر
کد حاضر یه چند پیکسل اینور انوره ولی کدی که الان پیدا کردم خیلی دقیقتر هست



<script language="JavaScript"> <!-- function autoResize(id){ var newheight; var newwidth; if(document.getElementById){ newheight=document.getElementById(id).contentWindo w.document .body.scrollHeight; newwidth=document.getElementById(id).contentWindow .document .body.scrollWidth; } document.getElementById(id).height= (newheight) + "px"; document.getElementById(id).width= (newwidth) + "px"; } //--> </script> <IFRAME SRC="usagelogs/default.aspx" width="100%" height="200px" id="iframe1" marginheight="0" frameborder="0" onLoad="autoResize('iframe1');"></iframe>



ولی هنوزم همون مشکلو داره یعنی با کروم و اپرا مشکل داره
در ضمن این کد ار یک سایت عالی خارجی پیدا کردم که از جون مرغ تا جون آدمیزاد توی اون هست
البته با اپرا و کروم مشکل داره البته توضیحات تکمیلی توی این سایت زیاده فکر کنم درست کرده ولی من نفهمیدم خیلی....
این آدرسشه
http://stackoverflow.com/questions/819416/adjust-width-height-of-iframe-to-fit-with-content-in-it

justplan
شنبه 16 شهریور 1392, 23:46 عصر
راه نهایی پیدا کردم که در تمام مرورگرها جواب میده

<script type='text/javascript'>

function setIframeHeight( iframeId ) /** IMPORTANT: All framed documents *must* have a DOCTYPE applied **/
{
var ifDoc, ifRef = document.getElementById( iframeId );

try
{
ifDoc = ifRef.contentWindow.document.documentElement;
}
catch( e )
{
try
{
ifDoc = ifRef.contentDocument.documentElement;
}
catch(ee)
{
}
}

if( ifDoc )
{
ifRef.height = 1;
ifRef.height = ifDoc.scrollHeight;

/* For width resize, enable below. */

// ifRef.width = 1;
// ifRef.width = ifDoc.scrollWidth;
}
}

</script>


<iframe name="name" title="title" src="adress.html" scrolling="no" border="0" width="700" height="1600px" id = "myIframe" onload = "setIframeHeight( this.id )"> </iframe>


هماهنگ با مرورگر موزیلا، اپرا و اینترنت اکسپلور
در همه ی این ها به صورت اتوماتیک اندازه ارتفاع محاسبه می شود به صورت دقیق البته توی کروم جواب نمی ده ولی چون ارتفاع را کردم 1600 کردم دیگه مهم نیست...