изменить источник iframe в т.е. с помощью JavaScript - PullRequest
15 голосов
/ 31 марта 2009

Я использовал iframe, который выглядит следующим образом:

<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>, мне приходится менять источник iframe. Я использую следующий код:

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");    
}

Это работает с Firefox, но не с Internet Explorer.

Какой код будет работать и для Internet Explorer?

Ответы [ 13 ]

1 голос
/ 31 марта 2009

Коллекция фреймов возвращает объекты окна (или эквивалент). Вы хотите нацелиться на объект документа; попробуйте сделать:

window.frames ['iframeId']. Document.location.href = ....

Это работает в IE, FF, Safari и т. Д., Поэтому нет необходимости в обнаружении грязного браузера.

пь. IIRC ссылается на коллекцию фреймов name в IE, id в других браузерах, так что вам нужен атрибут name и id для - но у вас уже это есть, так что не беспокойтесь!

0 голосов
/ 24 сентября 2013

Обратите внимание, что если вы изменяете только #anchor URL-адреса (т.е. меняете с page.php # this на page.php # that), то IE не будет обновлять страницу, а Chrome и Firefox. Если это ваша проблема, то вы можете добавить что-то случайное в строку запроса, чтобы IE подумал, что это совершенно новая страница, и принудительно перезагрузите ее.

Например (используя jQuery):

var hash = 'yourHash';
var rand = 1 + Math.floor(Math.random() * 9999);
var helpUrl = 'page.php?rand=' + rand + '#' + hash;
$('#iframe').attr('src', helpUrl);
0 голосов
/ 30 июня 2009

Просто используйте следующий код.

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

Должно работать с любым браузером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...