1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 用window.open在同一个新窗口中访问指定url【IE页面缓存问题】

用window.open在同一个新窗口中访问指定url【IE页面缓存问题】

时间:2023-08-26 14:20:12

相关推荐

用window.open在同一个新窗口中访问指定url【IE页面缓存问题】

无数次尝试,拼命搜索查资料,就这么个问题花去整整5小时,残念。。。

好歹现在解决了。

情况如下:

想实现类似于newegg,icson等网上商城的购物车模式,即在选购商品的页面A中,点击某些链接,把商品ID传入购物车页面B中,B页面根据此querystring中包含的ID向购物车容器添加此商品,然后购物车页面刷新到无querystring参数的页面状态下。此后每次在页面A中点击添加购物车链接,B页面始终在同一个标签页/窗口中刷新。

观察newegg的页面源代码,在页面A中的链接,是以js形式的window.open(url,windowName)进行窗口的触发。

可是问题出现:

在IE中,点击A页面中的链接,B页面的标签会闪一下,但是也没不做任何改动。后来在B页面的body中onload事件添加客户端方法后观察,发现每次A页面执行window.open时候B其实会重新load的,只不过不做任何回发postback。

而如果用手头的FF3,Chrome浏览器,则会达到期望效果。

研究了很久,很遗憾根本搜不出任何关于这个症状有用的信息,直到发现浏览器页面缓存的字眼,问题解决。

代码如下:

页面A:

<script type="text/javascript" >

function AddToCart(t, Width, Height) {

var newwindow = window.open('test.aspx?id=' + t, 'basketlist');

}

</script>

几种调用方法均可,残念啊,在没找到原因之前,啥都尝试过了...

<asp:HyperLink runat="server" NavigateUrl="javascript:AddToCart('a')" Text ="hyperlink" />

<a href ="javascript:AddToCart('a')" >test</a>

<a href ="#" onclick ="AddToCart('a')" >test</a>

<asp:Button id="btnTest" runat ="server" OnClientClick ="AddToCart('a')" />

页面B:test.aspx.cs

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.Cache.SetNoStore();

if (Request.QueryString["id"] != null)

{

HttpCookie cookie = Request.Cookies["Cookie"] ?? new HttpCookie("Cookie");

cookie.Value = cookie.Value + Request.QueryString["id"];

Response.Cookies.Add(cookie);

Response.Redirect("test.aspx");

}

}

if (Request.Cookies["Cookie"] != null)

ltTest.Text = Request.Cookies["Cookie"].Value;

}

---

补充材料:

window.open方法的使用和重载

/HTMLDOM/met_win_open.asp

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。