3

我们在引导模式中呈现带有 runat="server" 标记的 ASP.Net Web 表单。我们使用内置的引导功能来使用 jQuery 加载函数执行获取请求,然后将响应插入到引导模式标记中。

asp.net web 表单在回发时返回 204(无内容)的 HTTP 状态代码,这意味着我们可以提交表单,ASP.Net 服务器端单击事件会适当地触发,并且浏览器不会尝试呈现响应。然后我们用一些 javascript 关闭引导模式。

这在 IE10、Firefox、Chrome 和 Safari 中的 Windows 上运行良好。然而,在 iPad 上,在 Safari 中,通过将原始页面标记呈现为文本来响应 204 状态代码。我也尝试过 302 Not Modified,它也没有解决问题(并且在语义上并不正确)。

我搜索了类似的问题,只找到了对 2008 年的旧 webkit 错误的引用,其中代码被描述为在收到 204 时呈现空白页面。

解决问题

我还尝试将 Response 对象的 SuppressContent 属性设置为 true:

        if (!Page.IsPostBack)
        {
            // Do page rendering stuff
        }
        else
        {
            Response.StatusCode = (int)HttpStatusCode.NoContent;
            Response.SuppressContent = true;
        }

这确实有助于 Safari 不再将原始页面标记呈现为文本,引导模式通过 javascript 调用关闭,但 safari 显示在地址栏中的模式中加载的页面的 URL,并且其行为就像正在加载页面但从来没有。用户可以使用该应用程序并请求其他页面没有问题,因此我们可以认为这是一种变通方法。但是,我想找到更清洁的东西。

有什么想法或建议吗?

注意:我们正在重构旧版 Web 应用程序的 UI,无法完全改变页面的运行方式。

4

0 回答 0