0

我有一个产品页面,每个产品都有一个链接:“购买”。单击链接后,将显示一个弹出窗口,其中嵌入了另一个 .aspx 文件。(弹出框由 Colorbox 插件生成)

用户进行购买后(单击发送到数据库信息的按钮等): 1. 弹出窗口必须自行关闭 2. 必须重新加载父页面 3. 必须保持滚动位置

问题是没有保持滚动位置(尤其是在 IE 浏览器中)。

我试过的:1。

 MaintainScrollPositionOnPostback="true" -- had no effect

和:

弹出页面:

<script>window.parent.callbackfromchild('" + ID + "');</script>

父页面: 函数 callbackfromchild(arg) {

            __doPostBack("callbackbtn", "");

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

我究竟做错了什么?

4

2 回答 2

0

您需要在父 aspx 页面中使用此脚本

<script>
        function callbackfromchild(id) {
         //maintain hash on post back
          var form = document.getElementById("<%=Page.Form.ClientID%>");
          // Change form action & post back
            form.action += '#'+ id;
          __doPostBack("<%=callbackbtn.ClientID%>", "");
        }
    </script>

你需要这个带有 ID 的锚点来使用来自 popup 的函数参数 - 放置在每个具有不同 ID 的产品旁边。因此,当父页面的 URL 重新加载并添加了哈希“page.aspx#x1”时,它会使浏览器滚动到该元素。

<a id="x1"></a>

我猜你已经在父页面上有这个链接按钮,将成为回发的目标

<asp:LinkButton ID="callbackbtn" runat="server" />

在颜色框弹出窗口中,您需要将锚点 ID 传递回父级

window.parent.callbackfromchild('x1')

或者它是一个弹出窗口,你可以这样称呼它

window.opener.callbackfromchild('x1')
于 2013-08-15T13:28:00.207 回答
0

您可以在打开弹出窗口之前将当前滚动位置放入 cookie 并在 window.onload 上重新应用它,我使用 jQuery.scrollTo 插件来完成此类任务,它完美无缺

于 2013-08-15T13:28:21.443 回答