我有一个包含产品的页面,每个产品都有一个链接:"购买"。单击链接后,将显示一个弹出窗口,其中包含嵌入的另一个.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);
};
我做错了什么?
答案 0 :(得分: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来使用弹出的函数参数 - 放置在每个产品旁边,具有不同的id。因此,当父页面的URL重新加载并添加了一个哈希“page.aspx#x1”时,它将使浏览器滚动到该元素。
<a id="x1"></a>
我猜你已经在父页面上有这个Linkbutton,将成为回发的目标
<asp:LinkButton ID="callbackbtn" runat="server" />
在colorbox弹出窗口中,您需要将锚点ID传递回父级
window.parent.callbackfromchild('x1')
或者那是一个弹出窗口,你可以这样称呼它
window.opener.callbackfromchild('x1')
答案 1 :(得分:0)
您可以在打开弹出窗口之前将当前滚动位置放入cookie中并在window.onload上重新应用它,我使用jQuery.scrollTo插件执行此类任务,它完美无缺