jquery مسار تغيير مصدر إفريم في أي باستخدام جافا سكريبت




مسار جافا سكربت (11)

لقد استخدمت إفريم الذي يشبه هذا:

<iframe style='width: 330px; height: 278px' scrolling='no' name="iframeId" class="advPlayer" id="iframeId" frameborder="0" src='../../player/iabpreview.php?adid=<?php echo $selectedAdIdx ?>&amp;autoPlay=true'></iframe>

كلما نقرت على <div> ، يجب تغيير مصدر إفريم. أنا باستخدام التعليمات البرمجية التالية:

if ($j.browser.msie) {            
  frames['iframeId'].window.location="../player/iabpreview.php?adid="+adId+"&autoPlay=true";
}else {
  $j(".advPlayer").eq(0).attr("src", "../player/iabpreview.php?adid="+adId+"&autoPlay=true");    
}

هذا يعمل مع فايرفوكس، ولكن ليس مع إنترنيت إكسبلورر.

ما هي التعليمات البرمجية التي سوف تعمل لبرنامج إنترنيت إكسبلورر أيضا؟


تجدر الإشارة إلى أنه في حالة تغيير # عنوان عنوان ورل (أي التغيير من page.php # هذا إلى page.php #)، فلن يقوم إي بتحديث الصفحة ولكن كروم وفايرفوكس. إذا كان هذا هو مشكلتك ثم قد ترغب في إضافة شيء عشوائي لسلسلة الاستعلام الخاص بك لجعل إي أعتقد أنها صفحة جديدة تماما وإجبار إعادة تحميل.

على سبيل المثال (باستخدام مسج):

var hash = 'yourHash';
var rand = 1 + Math.floor(Math.random() * 9999);
var helpUrl = 'page.php?rand=' + rand + '#' + hash;
$('#iframe').attr('src', helpUrl);

document.getElementById('MsgBoxWindow').getAttribute('src') في إنترنيت إكسبلورر، فايرفوكس، سفاري، للحصول على عنوان ورل المصدر.

document.getElementById('MsgBoxWindow').setAttribute('src', urlwithinthedomain) على نفس المتصفحات لتعيين عنوان ورل المصدر.

ومع ذلك، يجب تحميل إفريم قبل الاتصال. لا تضعه قبل إفريم أثناء استدعاء شفرة جافا سكريبت. يمكنك وضع كلا بعد إفريم، إذا كنت تتصل به مباشرة بعد تحميل الصفحة، وأنها سوف تعمل كما هو متوقع.


منذ كنت قد استخدمت علامة جكري قد يكون هذا في متناول يدي.

function resizeIframe(height) {
    height = parseInt(height);
    height += 100;
    $('iframe#youriframeID').attr('height', height);   
}

في حال كنت تفعل تغيير حجم عبر المتصفح إلقاء نظرة على هذا المنصب الذي يفسر كيفية تغيير حجم تلقائيا على أساس المحتوى إفرامس. سوف تحتاج إلى الوصول إلى هتمل من موقع إفرامد. تغيير حجم إفريم استنادا إلى المحتوى


document.getElementById("iframeId").src = "Your URL here."

يمكنك تغيير سرك من إفريم باستخدام طريقتين:

  1. تغيير هريف.
  2. تغيير سرك.

تتطلب كلتا الطريقتين أن يتم تحميل إفريم تماما قبل محاولة التعديل.

يعمل تغيير هريف في جميع المتصفحات، بما في ذلك IE5. يمكنك معالجة الإطار

  • من خلال الرجوع إلى إطار المحتوى للعنصر:

    فار ميفريم = document.getElementById ('ميفريم')؛ myFrames.contentWindow.location = ' http://example.com

  • من خلال الرجوع إلى نيم للعنصر:

    فار ميفريم = window.frames.myFrame؛ // حيث ميفريم هو نيم للعنصر myFrame.location = ' http://example.com

تغيير سرك كما ذكر أعلاه، عن طريق اختيار العنصر وتغيير سرك - ولكن يجب أن يكون الطفل، وليس عنصرا سليل.

var myFrame = document.getElementById('myFrame');
myFrame.src = 'http://example.com' 

أحصل على هذا من مكان آخر:

function getElementById(strId) {
  var element;

  if (document.getElementById) {
    element = document.getElementById(strId);
  }
  else if (document.all) {
    element = document.all[strId];
  } else if (document.layers) {
    element = document.layers[strId];
  } else {
    element = eval("document." + strId);
  }

  return element;
}

يجب ألا تستخدم "كشف المتصفح"، ولكن ميزة الكشف. الطريقة الأكثر آمنة إمهو هو هذا:

function SetIFrameSource(cid, url){
  var myframe = document.getElementById(cid);
  if(myframe !== null){
    if(myframe.src){
      myframe.src = url; }
    else if(myframe.contentWindow !== null && myframe.contentWindow.location !== null){
      myframe.contentWindow.location = url; }
    else{ 
      myframe.setAttribute('src', url); 
    }
  }
}

فقط اختبر إذا كانت خاصية سرك متوفرة. إن لم يكن، اختبار على إطار المحتوى، وآخر محاولة سيتاتريبوت.


لقد حاولت getElementById والكثير من المتغيرات الأخرى. لم ينجح أي شيء في إي أو فف أو أوبيرا أو كروم.

هذا يعمل بشكل جيد: parent.frames.IFRAME_ID.location.href = '/';


تقوم مجموعة الإطارات بإرجاع عناصر الإطار (أو ما يعادلها). تريد استهداف كائن المستند؛ محاولة القيام:

window.frames ['إفراميد'] document.location.href = ....

هذا يعمل في إي، فف، سفاري، وهلم جرا، لذلك لا حاجة للكشف عن متصفح فوضوي جدا.

ملحوظة. إيرك جمع الأطر يشير اسم في إي، معرف في المتصفحات الأخرى، لذلك تحتاج إلى كل من اسم و سمة إد على - ولكن لديك بالفعل ذلك، لذلك لا تقلق!


<script type="text/javascript">
  function changesrc(iframid, pagesrc)
  {
    document.getElementById(iframid).src = pagesrc; 
  }
</script>

<table style="width: 100%">
<tr>
  <td>
    <a href="#" onclick="changesrc('iframe1','page1.php')">Page1</a> <br/>
    <a href="#" onclick="changesrc('iframe1','page2.php')">Page2</a> <br/>
    <a href="#" onclick="changesrc('iframe1','page3.php')">Page3</a>
  </td>
  <td>   
    <iframe id="iframe1" src="page1.php" scrolling="no" 
            height="100%" width="100%" style="border:0px;"></iframe>
  </td>
</tr>
</table>

مجرد استخدام التعليمات البرمجية التالية.

var iframe = document.getElementById('IFRAME ID'); // just for clarity
iframe .src = 'URL here';

يجب أن تعمل مع كل متصفح.





iframe