PDA

View Full Version : اجرای کد درون Ifrime و اعمال آن در صفحه حال حاظر



shahab_ksh
یک شنبه 16 آبان 1389, 23:48 عصر
با سلام


فرض کنید که در صفحه ای کد زیر موجود است




<"table border="1>
<tr>
<td>
1</td>
<td>
2</td>
<td>
3</td>
</tr>
<tr>
<td>
4</td>
<td>
5</td>
<td>
6</td>
</tr>
</table>

<iframe scrolling=auto id=rf src=http://test.com/a.html frameborder=0></iframe>




خوب حالا من میخام در کد جاوا اسکریپتی که در فایل http://test.com/a.html وجود داره


سطر اول رو مخفی کنم با دستور زیر




<script language="javascript" type="text/javascript">
var Ctlr = window.document.getElementsByTagName('tr')
Ctlr[0].style.display = 'none';


</script>



ولی چرا اعمال نمیشه؟ و چه راهی داره برای اجرای این کد به صورت صحیح

eAmin
دوشنبه 17 آبان 1389, 16:02 عصر
سلام
این رو قبلا در یک فروم دیگه توضیح داده بودم، بدرد شما هم می خوره:


بزاريد براي شما توضيح كامل بدم.
شما اگر بخوايد به محتويات يك iframe دسترسي پيدا كنيد، در حالت معمول مي تونيد از اين كد يا كدهاي مشابه استفاده كنيد:


window.onload = function() {
var iframe = document.getElementById("iframe1");
var content = (iframe.contentDocument) ? iframe.contentDocument.body : iframe.contentWinbdow.document.body;
// do something
};
با استفاده از كد بالا مي تونيد محتويات iframe رو دستكاري كنيد درصورتي كه اون صفحه رو از طرق لوكال و يا دامين خودتون لود كنيد. در غير اينصورت هنگام تغيير محتويات، ارور permission denied دريافت مي كنيد. شما وقتي مي تونيد صفحه خارجي موردنظر تغيير بديد كه سايت مورد نظر اجازه اينكار رو به شما بده؛ رجوع كنيد به Same Origin Policy در Wikipedia:

http://en.wikipedia.org/wiki/Same_origin_policyولي راههايي هم براي دور زدن اينكار وجود داره همونطور كه خودتون هم گفتيد با استفاده از php مي شه، به اينصورت كه محتويات صفحه رو با استفاده از php كامل دريافت كنيد و همونجا كارهاي لازم رو انجام بديد و يا از طريق كدهايي كه در بالا قرار داده شد براي تغيير استفاده كنيد.
يك راه ديگه هم هست و نيازي به php نيست. روش كار هم به اينصورته كه اول صفحه رو دريك iframe مخفي لود مي كنيد، بعد محتويات iframe مخفي رو توسط JavaScript درون iframe جديد ( يك iframe ثانويه توسط JavaScript اضافه مي كنيد ) قرار مي ديد و بعد هرطور كه خواستيد با استفاده از كدهاي بالا باهاش انجام بديد.
محتويات iframe رو هم به اينصورت بگيريد (‌ادامه كد بالا ):


var iframeContent = content.innerHTML;
اينطوري شما محتويات body فريم مخفي خودتون رو در اختيار داريد.

موفق باشيد.

اطلاعات بیشتر: http://forum.p30world.com/showthread.php?t=441068

mehdi.mousavi
دوشنبه 17 آبان 1389, 16:11 عصر
با سلام فرض کنید که در صفحه ای کد زیر موجود است خوب حالا من میخام در کد جاوا اسکریپتی که در فایل http://test.com/a.html وجود داره سطر اول رو مخفی کنم با دستور زیر ولی چرا اعمال نمیشه؟ و چه راهی داره برای اجرای این کد به صورت صحیح

سلام.
کافیه تا بدین شکل عمل کنید:


var rows = parent.document.getElementsByTagName('tr');
if (rows && rows.length) {
rows[0].style.display = 'none';
}


موفق باشید.

@eAmin: ایشون میخوان از داخل iframe به parent دسترسی پیدا کنن، در صورتیکه توضیحات شما مربوط به چگونگی دسترسی از parent به iframe هستش.

shahab_ksh
پنج شنبه 20 آبان 1389, 00:05 صبح
جناب mehdi.mousavi (http://barnamenevis.org/forum/member.php?u=41233)

کد شما درسته اما جالبه که اصلا نمیشه با این روش ترجمه گر گوگل رو مخفی کرد

http://translate.google.com/translate?js=n&prev=_t&hl=fa&ie=UTF-8&layout=2&eotf=0&sl=en&tl=fa&u=http%3A%2F%2Fwww.shahab.info

البته هدف ترجمه گر گوگل نیست اما نه به راحتی با api حله