[原创]关于Iframe中使用thickbox调用parent.tb_remove()方法无效的解决办法

最近在网站开发过程中,涉及到thickbox弹出选择商品对话框然后添加到购物清单,并关闭弹出框的功能,因为后台是iframe框架结构,代码如下:


上方是导航nav,左侧是菜单menu,右侧才是操作区域,要实现的弹出thickbox框的操作是在右侧iframe中进行的,首先利用按钮弹出thickbox层,代码如下:

function Search() {
//tb_init("search");
tb_show("搜索结果", "/goods/search?width=800&telOrder=1&keyType=" + $("#keyType").val() + "&keywords=" + encodeURI($("#keywords").val()), null);

}

然后search.aspx页面中选中checkbox的click事件,异步提交商品信息到后台保存,然后关闭当前层,代码如下:

function AddToOrder(id) {
if($("#"+id).attr("checked")) {
//alert($("#" + id).attr("checked"));
$.post("/order/addtoorder", { goodsId: id }, function(data) {
//alert(data);
parent.tb_remove(); //注意这里是错误的,因为iframe的原因parent获取的是整个窗口,而不是当前的iframe中的页面
}, "json");

}
}

注意:parent.tb_remove();这句是不能关闭当前窗口的,因为当前页面是在iframe中,parent获取的是整个窗口,需要再调用右侧iframe才是真正的thickbox的parent页面

改成如下代码,可以成功关闭thickbox:

parent.frames[2].tb_remove();
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏