【发布时间】:2012-05-14 11:56:32
【问题描述】:
我们有一个站点,我们在其中 Response.Redirect 到一个页面(购物车页面),并且由于某种原因,在使用 IE8 时没有为该页面调用 Page_Init 和 Page_Load 函数。即使我将光标放在 URL 栏中并按回车键,它们仍然没有被调用。当我按 F5 时,它被调用。当我使用另一个浏览器(包括 IE8 模式下的 IE9)时,它们会被调用。我运行 Fiddler2 来检查流量,当我点击 URL 栏并按 Enter 键时没有出现流量,即使您看到世界图标旋转并且它似乎在做 1/2 秒的事情。
什么可能导致这种行为?似乎它必须是 Javascript 和/或拦截 Page_Load 的更新面板。
细节:网站是 AbleCommerce,页面是购物车页面。我们已经定制了产品选择流程。
我能够在我们的站点测试实例上复制问题,因此我将断点添加到加载购物车的自定义控件的 Page_Init 和 Page_Load 函数中。在 IE8 下,我可以将光标放在 IE8 的 url 栏中并按回车键,断点永远不会被击中。任何其他浏览器,他们都会受到打击。在 IE8 浏览器模式下运行 IE9,他们会受到打击。但是在 IE8 中,它们只有在我刷新 (F5) 时才会受到影响。
我认为这一定是 Javascript 或更新面板问题。 Firefox 错误控制台或 IE8 中没有显示 Javascript 错误。
对可能导致这种情况的任何想法?或者我该如何解决?
【问题讨论】:
-
尝试使用额外的参数调用您的页面,例如
&_=xyz,其中xyz总是新鲜的(例如当前时间字符串)。如果使用额外的参数刷新页面,则会出现浏览器缓存过于激进的缓存问题。为什么会这样——很难说。这可能是一个 jquery 问题,您在启用完全缓存的情况下调用 url,然后浏览器在内部获取缓存设置并且永远不会回调您的页面。 -
添加查询字符串参数确实会导致回发。我想快速的解决方法是在 response.redirect 中添加一个随机查询字符串参数。
-
我可以发布这个作为答案吗?
-
是的,请这样做。我会接受它,因为它解决了我的问题。
标签: javascript asp.net internet-explorer asp.net-ajax