Подтвердить что ты не робот

Браузер обращается к вложенному iframe перед самой страницей - есть ли способ избежать этого?

У меня есть страница с динамическими данными, загружаемыми некоторыми ajax и множеством javascript.

страница содержит список, из которого пользователь может выбрать, и каждое выбранное значение загружает новые данные на страницу.

Один из этих элементов данных - это URL-адрес, предоставляемый iframe.

Я использую jQuery BBQ: Back Button и Библиотека запросов, чтобы имитировать поведение браузера.

Все работает хорошо, кроме того, что когда я впервые нажимаю кнопку "Назад", iframe возвращается в свое предыдущее местоположение, а затем мне нужно снова щелкнуть назад, чтобы вернуть страницу.

Есть ли способ отключить поведение iframe?

4b9b3361

Ответ 1

Я нашел ответ на вопрос, что он может быть полезен другим.

Проблема заключалась в том, как я назначил новые URL-адреса для моего iframe, я использовал Jquery, чтобы он выглядел примерно так:

$('#myIFrame').attr('src',newUrl);

При назначении URL таким образом он добавляет новую запись в список посещенных URL-адресов браузера, чтобы вернуться к.
Это не было желательным поведением, поэтому после некоторых поисковых запросов я обнаружил, что вы можете назначить новый URL-адрес объекту Iframe без добавления его в "back-list", он выглядит так:

var frame = $('#myIFrame')[0];  
frame.contentWindow.location.replace(newUrl);

Таким образом, моя кнопка назад ведет себя точно так, как ожидалось.

btw, я получил ответ от здесь.

Надеюсь, это было полезно для вас, как и для меня.

Ответ 2

Я предлагаю вам создать гиперссылку в вашем iframe. назовите его "Назад" и поставьте href как javascript: history.back(-1). Лучшее, что вы можете сделать, я думаю.

Ответ 3

Принятый ответ не работает, если вы пытаетесь установить междоменный URL для IFrame. В качестве обходного пути я отключил IFrame из DOM перед установкой src (используя jQuery).

// remove IFrame from DOM before setting source, 
// to prevent adding entries to browser history
var newUrl = 'http://www.example.com';
var iFrame = $('#myIFrame');
var iFrameParent = iFrame.parent();

iFrame.remove();
iFrame.attr('src', newUrl);
iFrameParent.append(iFrame);

Ответ 4

В основном вам нужно предотвратить добавление новых записей истории в iframe, history.replaceState, представленный в HTML5, будет работать в большинстве случаев.

history.pushState(state, title, url);

Ответ 5

Нет, это полностью зависит от браузера.