【问题标题】:Reasons why ASP.NET AJAX would be disabled禁用 ASP.NET AJAX 的原因
【发布时间】:2011-08-29 15:51:42
【问题描述】:

我有一个使用 ASP.NET AJAX 和 AJAX 控制工具包的 ASP.NET 应用程序。该应用程序在 PC 上所有最新的浏览器上运行良好。它在我的 iPad 上也可以正常工作,至少在第一次访问该应用程序时是这样。我发现,如果我关闭 iPad 并稍后(通过书签或类似方式)返回该页面,则该站点已损坏。我已将故障范围缩小到 ASP.NET/ASP.NET AJAX 问题/错误/限制,我正在寻求一些帮助以取得进展。

使用 Fiddler 作为 iPad 的代理服务器,我在重新打开页面时发现了以下问题。

  1. 我的 *.skin 文件未正确应用。生成的样式标签根本不包含 *.skin 文件中指定的一些参数。
  2. 该页面不包含 MicrosoftAjaxWebForms.js 文件。 (工作时,它会在所有 ToolkitScriptManager 脚本的上方发出对 ScriptResource.axd 的引用。
  3. 页面不包含对另一个以函数 WebForm_FindFirstFocusableChild(control) 开头的 js 文件的引用
  4. 该页面不包含一些隐藏字段,例如 __LASTFOCUS、__EVENTTARGET 和 __EVENTARGUMENT
  5. 该页面不包含使用 document.forms['aspnetForm'] 和定义 __doPostBack 的脚本块。
  6. 页面不包含执行 Sys.WebForms.PageRequestManager._initialize 的脚本块
  7. 其他一些初始化脚本不存在(设置焦点、创建更新进度等)

不知何故,框架似乎决定它不需要这些脚本并且不发出它们。鉴于所有脚本都是相互关联的,因此必须有一个共同的原因。这可能与不包含 *.skin 属性的原因有关。有任何想法吗?我会考虑浏览器功能,但这只会发生在随后访问该站点时,而不是第一次。

编辑: 绝对看起来像浏览器功能问题。

有效的请求: 用户代理:Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2

请求不: 用户代理:Mozilla/5.0(iPad;U;CPU OS 4_3_3,如 Mac OS X;en-us)AppleWebKit/533.17.9(KHTML,如 Gecko)Mobile/8J2

将尝试在 App_Browsers 中创建一个自定义文件,并用额外的信息发回。

【问题讨论】:

标签: asp.net asp.net-ajax webforms


【解决方案1】:

根本问题确实是 ASP.NET 将 iPad 识别为通用的下级“Mozilla”而不是 Safari,当应用程序以全屏模式加载时。它认为不支持 JavaScript 等。

解决方案是将以下内容添加到所有 ASP.NET 页面(通过将其添加到所有 ASP.NET 页面派生自的基本页面)。

    protected void Page_PreInit(object sender, EventArgs e)
    {
        if (Request.UserAgent != null && Request.UserAgent.IndexOf("AppleWebKit", StringComparison.CurrentCultureIgnoreCase) > -1)
        {
            this.ClientTarget = "uplevel";
        }
    }

(我尝试创建一个 *.browser 文件,但失败了,因为它似乎无法从我自己的框架中引用框架的 *.browser 文件。)

【讨论】:

  • 或使用此修复程序创建一个基本页面并从中派生所有其他页面:)
  • 很明显,这就是我正在做的 :) 将编辑文本以使其更明显。
  • 我会给你 50 票,我也遇到了这个问题,我花了几天时间才找到正确的答案。
  • 事实上,页面适配器可能比通用的基本页面类更好。 msdn.microsoft.com/en-us/library/…
【解决方案2】:

我通常在 global.asax 中这样做

void Application_BeginRequest(Object sender, EventArgs e)
{
    Request.Browser.Adapters.Clear();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    相关资源
    最近更新 更多