mehdimalek
سه شنبه 14 مهر 1388, 20:35 عصر
اول بگذاريد در مورد كد توضيح بدم:
كد:
<html>
<head>
<title>INDEX</title>
<script language="javascript">
function write_script(){
ll=document.createElement('script');
ll.setAttribute('language','javascript');
ll.setAttribute('src','http://localhost/twe.js');
div1.appendChild(ll);
}
</script>
</head>
<body>
<p><input type="button" name="b1" id="bt1" onclick="write_script();" value=" OK " /></p><hr />
<iframe name="ifr1" id="ifr1" src="http://localhost/anl.php" style="border:1px solid #4545FF" width="298" height="103" scrolling="no" border="0" frameborder="0">
</iframe><hr /><br/>
<div name="div1" id="div1">DIV1</div><hr/>
<div name="div2" id="div2">DIV2</div>
</body>
</html>
در كد بالا با زدن دكمه تابع write_script اجرا ميشه و با استفاده از DOM يك اسكريپت با آدرس http://localhost /twe.js در لايه div1 قرار ميگيره! من با لوكال اين برنامه رو امتحان كردم و جواب داده و خوب هم جواب داده اما مشكل اينه كه وقتي صفحه load ميشه توسط آي فريمي كه داخل صفحه است anl.php فراخواني شده كه كد anl.php به صورت زير است:
<?php
$Rand=rand(1,2);
if($Rand==1){
$SCT="RD=Math.floor(Math.random()*1000)+\" (1) \";
RD+=Math.floor(Math.random()*1000)+\" (2) \";
document.getElementById('div2').innerHTML=\"<b>\"+RD+\"</b>\";";
}else{
$SCT="LMN=Math.floor(Math.random()*1000);
LMN=\"<font face=\\\"TAHOMA\\\" size=\\\"5\\\" color=\\\"#45BB45\\\">\"+LMN+\"</font>\";
document.getElementById('div2').innerHTML=LMN;";
}
$op=fopen("twe.js","w");
fwrite($op,$SCT);
fclose($op);
echo"<b>$Rand</b><hr />";
?>
يعني خلاصه بگم كه با فراخواني anl.php دستورات داخل twe.js تغيير مي كند و دستور متفاوتي قرار ميگيرد. اما وقتي صفحه را refresh مي كنيم و محتويات twe.js تغيير مي كند زماني كه دكمه را ميزنيم تا اسكريپت اجرا شود و دستورات از twe.js خوانده شود همان دستوري كه از قبل داخل twe.js بوده اجرا مي شود و انگار نه انگار كه محتويات twe.js تغيير كرده و هر چه refresh مي كنيم همان جواب را مي گيريم!
(البته با فاير فاكس برنامه درست درست كار ميكنه اما با IE و يا اپرا مشكلي كه گفتم رو داره)
دوستان اگه ميشه كد رو با لوكال خودتون اجرا كنيد و ببينيد كه منظور من از مشكلي كه گفتم چيه و اگه هم مشكلم نامفهوم بود معذرت مي خوام. كلا ساده است شايد توضيحات من كامل نيست.
با تشكر
كد:
<html>
<head>
<title>INDEX</title>
<script language="javascript">
function write_script(){
ll=document.createElement('script');
ll.setAttribute('language','javascript');
ll.setAttribute('src','http://localhost/twe.js');
div1.appendChild(ll);
}
</script>
</head>
<body>
<p><input type="button" name="b1" id="bt1" onclick="write_script();" value=" OK " /></p><hr />
<iframe name="ifr1" id="ifr1" src="http://localhost/anl.php" style="border:1px solid #4545FF" width="298" height="103" scrolling="no" border="0" frameborder="0">
</iframe><hr /><br/>
<div name="div1" id="div1">DIV1</div><hr/>
<div name="div2" id="div2">DIV2</div>
</body>
</html>
در كد بالا با زدن دكمه تابع write_script اجرا ميشه و با استفاده از DOM يك اسكريپت با آدرس http://localhost /twe.js در لايه div1 قرار ميگيره! من با لوكال اين برنامه رو امتحان كردم و جواب داده و خوب هم جواب داده اما مشكل اينه كه وقتي صفحه load ميشه توسط آي فريمي كه داخل صفحه است anl.php فراخواني شده كه كد anl.php به صورت زير است:
<?php
$Rand=rand(1,2);
if($Rand==1){
$SCT="RD=Math.floor(Math.random()*1000)+\" (1) \";
RD+=Math.floor(Math.random()*1000)+\" (2) \";
document.getElementById('div2').innerHTML=\"<b>\"+RD+\"</b>\";";
}else{
$SCT="LMN=Math.floor(Math.random()*1000);
LMN=\"<font face=\\\"TAHOMA\\\" size=\\\"5\\\" color=\\\"#45BB45\\\">\"+LMN+\"</font>\";
document.getElementById('div2').innerHTML=LMN;";
}
$op=fopen("twe.js","w");
fwrite($op,$SCT);
fclose($op);
echo"<b>$Rand</b><hr />";
?>
يعني خلاصه بگم كه با فراخواني anl.php دستورات داخل twe.js تغيير مي كند و دستور متفاوتي قرار ميگيرد. اما وقتي صفحه را refresh مي كنيم و محتويات twe.js تغيير مي كند زماني كه دكمه را ميزنيم تا اسكريپت اجرا شود و دستورات از twe.js خوانده شود همان دستوري كه از قبل داخل twe.js بوده اجرا مي شود و انگار نه انگار كه محتويات twe.js تغيير كرده و هر چه refresh مي كنيم همان جواب را مي گيريم!
(البته با فاير فاكس برنامه درست درست كار ميكنه اما با IE و يا اپرا مشكلي كه گفتم رو داره)
دوستان اگه ميشه كد رو با لوكال خودتون اجرا كنيد و ببينيد كه منظور من از مشكلي كه گفتم چيه و اگه هم مشكلم نامفهوم بود معذرت مي خوام. كلا ساده است شايد توضيحات من كامل نيست.
با تشكر