View Full Version : یک سوال در ضمینه پنجره والد و فرزند
white fox
جمعه 22 اردیبهشت 1385, 17:34 عصر
با سلام....
دوستان عزیز من میدونم وقتی یه پنجره والد پنجره فرزندی رو open میکنه چجوری مقداری رو از پنجره فرزند به والد برگردونیم...اما این مورد فقط برای TextBox ها کار میکنه.نه برای مثلا Labelها یا divها ...
البته تونستم به یه نحوی یه تگ div بسازم تو فرم فرزند و appendChild کنم به form پنجره والد اما خوب در این حالت من نمیدونم کجا اضافه میشه...من میخوام در یک جای مشخص از فروم والد اون مقدار نشون داده بشه...
ممنون میشم از راهنماییتون
archangel
جمعه 22 اردیبهشت 1385, 23:31 عصر
مگه از طریق opener.document به پنجرهی والد دسترسی ندارین؟ دسترسی به document والد همه چیز رو حل میکنه دیگه. مثلاً اگه یه div به صورت زیر در پنجرهی والد داشته باشین:
<div id="myLabel">some label</div>
در پنجرهی فرزند میتونین بدین ترتیب متن داخل این div رو در پنجرهی والد تغییر بدین:
opener.document.getElementById("myLabel").innerHTML="some other label!";
white fox
شنبه 23 اردیبهشت 1385, 12:57 عصر
این کدی که شما گذاشتید برای من کار نکرد....اما تونستم جور دیگه ای مشکل خودم رو حل کنم...
یک تابع در فرم والد نوشتم که به وسیله آرگومان ورودی اطلاعات لازم رو از فرم فرزند بهش ارسال میکنم و بقیه کارهارو خود تابع انجام میده...
ممنونم از توجهتون
archangel
شنبه 23 اردیبهشت 1385, 14:35 عصر
تعجب میکنم. چون توی سیستم من که کار میکنه!
البته طبیعتاً این کُد به خودی خود کار نمیکنه. باید اونو مثلاً داخل رویدادگیر یه دگمه بذارین. من به جهت اختصار از نوشتن بقیهی چیزها صرفنظر کردم. در اینجا کُد کامل هر دو صفحهی والد و فرزند رو مینویسم:
صفحهی والد (parent.html):
<html>
<head>
<title>Parent Window</title>
</head>
<body>
<div id="myLabel">Hello</div>
<input type="button" onClick="window.open('child.html','','width=300,height=100' )" value="Click to open a child window">
</body>
</html>
صفحهی فرزند (child.html):
<html>
<head>
<title>Child Window</title>
<script language="javascript">
function changeParentDIV()
{
opener.document.getElementById("myLabel").innerHTML="Goodbye!";
}
</script>
</head>
<body>
<input type="button" onClick="changeParentDIV()" value="Click this to change parent DIV">
</body>
</html>
البته یه چیزی هم بگم. دلیل کار نکردن کُد ممکنه فایروال، آنتی ویروس یا سرویسپک ویندوز باشه که از active content و popup window ها جلوگیری میکنن. به اینها باید بگید به طور موقت کاری به کار صفحات شما نداشته باشن!
راستی یه سوال! شما چطوری از پنجرهی فرزند، تابعی رو در پنجرهی والد call میکنین!
یک تابع در فرم والد نوشتم که به وسیله آرگومان ورودی اطلاعات لازم رو از فرم فرزند بهش ارسال میکنم و بقیه کارهارو خود تابع انجام میده...
white fox
شنبه 23 اردیبهشت 1385, 21:23 عصر
من مسلما میدونم که به خودی خود اون کد کار نخواهد کرد و برای رویدادی مثل onclick باید ازش استفاده کرد...
من نه روی سیستمم فایروال دارم نه آنتی ویروس....
اون روش شما درسته و منطقی...قبول دارم اما من با اون روش فقط تونستم textbox هامو پر کنم...که برای من کافی نبود....
برای call کردن یه تابع هم فرض بزارید که اسم تابع aa باشه:
self.opener.aa('hello world!);
به همین راحتی تونستم این کار رو انجام بدم.
archangel
یک شنبه 24 اردیبهشت 1385, 07:37 صبح
مرسی. نکتهی خیلی مهم و جالبی بود.
StartPage
یک شنبه 24 اردیبهشت 1385, 10:53 صبح
سلام دوستان
ممکنه بگید اگه opener حاوی MasterPage باشه چطوری میشه
با استفاده از getElementById به کنترلهای درون Content Page دسترسی پیدا کرد.
(یعنی به کنترلهای Child صفحه والد)
چون با این کد نمیشه:
window.opener.document.getElementById('" + parentControlName + "').value='" + Value+ "';");
قبلا این مشکل رو تو این تاپیک هم مطرح کردم ولی بی جواب موند:
http://www.barnamenevis.org/forum/showthread.php?t=45438
illiya
شنبه 13 خرداد 1385, 09:11 صبح
سلام ،
من از 1 پنجره والد با استفاده از این کد :
window.showModalDialog('update.jsp?id=<%=id%>&check=0','','dialogHeight:300px;dialogWidth:650px; center:yes;scroll:yes;resizable:yes;help:no;status :no')&window.location.reload()
1 پنجره فرزند باز می کنم و تغییراتی رو در این پنجره اعمال می کنم . با بستن پنجره فرزند تغییرات در پنجره والد اعمال می شه اما اگه مجددا همون پنجره فرزند رو باز کنم ، تغییرات رو نشون نمی ده و اگه 10 بار تغییر کرده باشه ، همون مقدار اول رو نشون می ده ، مگر اینکه مرتبا IE رو ببندم و مجددا باز کنم ، لطفا بگید چطوری درستش کنم ؟
tabib_m
شنبه 13 خرداد 1385, 13:57 عصر
میتونی با هر بار تغییری که تو پنجره ی والد انجام میشه (یعنی هر بار رفرش) ، آدرس اون پنجره ی فرزند رو عوض کنی به صورتی که یک پارامتر اضافی با مقدار رندوم هم به اون بفرستی. یعنی آدرسی که به فرزند میدی یه همچین چیزی هم تهش بیات :
....&randNum=randomNumber
که به جای randomNumber میتونی یک عدد رندوم بذاری.
امیدوارم کارت رو راه بندازه.
sh_mohsen taki
چهارشنبه 17 خرداد 1385, 18:45 عصر
با سلام
oppener.GetElementByID.labelname.child or .... shayad
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.