Как предотвратить вставку страниц Iframe в историю просмотра IE - PullRequest
3 голосов
/ 30 марта 2012

У меня много проблем с вставкой страниц iframe в историю просмотра IE9. Это боль, потому что вы должны нажать несколько раз назад, чтобы перейти на предыдущую страницу. Какова причина этого? Это ошибка в браузере или на странице?

Edit: Я понял, что использую javascript для обновления источника всех iframes на странице, чтобы добавить атрибут wmode = transparent.

$('iframe').each(function () {
    var url = $(this).attr("src")
    $(this).attr("src", url + "?wmode=transparent");
 });

Это было добавлено для того, чтобы навигация по меню проходила за видео YouTube. Есть ли способ предотвратить вставку этих событий в историю IE?

Ответы [ 3 ]

7 голосов
/ 04 декабря 2012

Можно было бы заменить iframe вместо обновления источника.

$('iframe').each(function () {
   var url = $(this).attr("src")
   //$(this).attr("src", url + "?wmode=transparent");

   url = url + "?wmode=transparent";

   var frm = document.createElement("iframe");
   frm.src = url;
   //copy attributes of this -> frm
   $(this).replaceWith(frm);
});

Запись истории создается каждый раз, когда атрибут src iframe изменяется после его вставки в DOM.Если вы не контролируете содержимое iframe (стороннего iframe), то если они каким-либо образом изменят расположение своей страницы, будет создана запись истории.

1 голос
/ 09 июля 2012

Я не знаю обо всех обстоятельствах, но на сайте finance.yahoo.com ссылка на файл like.ph в facebook иногда вставляется в историю кнопки «Назад».Это вызвано скриптом на странице.Это происходит, когда ссылка на Facebook становится видимой на веб-странице.Это вызывает функцию, которая создает ссылку в истории кнопки возврата.Пользователю не нужно ничего нажимать, чтобы это произошло.

0 голосов
/ 29 ноября 2012

вместо

$(this).attr("src", url + "?wmode=transparent");

сделать

$(this).get(0).contentWindow.location.replace(url + "wmode=transparent");
...