Перезагрузите и запомните позицию прокрутки после возврата из всплывающего окна

У меня есть страница с продуктами, и у каждого продукта есть ссылка: "Купить". После нажатия ссылки появится всплывающее окно, которое будет находиться внутри другого встроенного файла.aspx. (всплывающее окно создается плагином Colorbox)

После того, как пользователь совершает покупку (нажав кнопку, которая отправляет информацию БД и т.д.): 1. всплывающее окно должно закрыть себя 2. родительская страница должна быть перезагружена 3. позиция прокрутки должна быть сохранена

Проблема в том, что позиция прокрутки не поддерживается (особенно в браузере IE).

То, что я пробовал: 1.

MaintainScrollPositionOnPostback="true" -- had no effect

А также:

Всплывающая страница:

Родительская страница: function callbackfromchild (arg) {

__doPostBack("callbackbtn", "");

 window.onload = function () {
 document.getElementById('#div' + arg).scrollIntoView(true);
 };

Что я делаю не так?

2 ответа

Вы можете поместить текущую позицию прокрутки в файл cookie, прежде чем открывать всплывающее окно и повторно использовать его на window.onload, я использую плагин jQuery.scrollTo для таких задач, он отлично работает


Этот сценарий вам нужен на родительской странице aspx

И вам нужен этот якорный идентификатор -with, чтобы использовать параметр функции из popup-, размещенный рядом с каждым продуктом с разными идентификаторами. Поэтому, когда URL-адрес родительской страницы перезагружается с добавлением хеша "page.aspx # x1", он заставит браузер прокручиваться по этому элементу.

И я думаю, у вас уже есть этот Linkbutton на родительской странице, будет объектом обратной передачи

В всплывающем окне colorbox вам необходимо передать идентификатор Id вернитесь к родительскому

window.parent.callbackfromchild('x1')

Или это было всплывающее окно, вы бы назвали это так

window.opener.callbackfromchild('x1')

licensed under cc by-sa 3.0 with attribution.