11

我刚刚下载了适用于 iPad 的 Google Chrome,我注意到它不适用于 ASP.NET 4 网站!

例如,创建一个简单的页面:

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Protected Sub LinkButton1_Click(sender As Object, e As System.EventArgs)
    Response.Write("Link button was clicked")
End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
    </div>
    </form>
</body>
</html>

现在尝试单击链接按钮,但它不会触发回发事件。

我似乎无法调试,因为没有 javascript 控制台可以找出发生了什么。

!!更新 !!

我发现您需要从 Chrome 的设置下拉菜单中选择请求桌面站点才能使其正常工作。

!!更新 !!

ASP.NET 无法识别某些浏览器的最新版本,因此会将它们视为低级浏览器。(基本上:没有 JavaScript。)修复是获取更新的浏览器定义文件。

我们在哪里可以获得更新的 Chrome 浏览器定义文件?

4

4 回答 4

8

我遇到了同样的问题。大多数东西在我的页面上都可以正常工作,只是在客户端修改的一些项目显示不正确。

我检查了 ipad 上每个浏览器返回的头文件,发现在桌面模式下的 Chrome 中,它只是假装是一个 Mac Box,在头中发送以下内容: Mozilla/5.0+(Macintosh; +Intel+Mac+OS+X+10_7_3)+AppleWebKit/534.53.11+(KHTML,+like+Gecko)+版本/5.1.3+Safari/534.53.10

当它处于标准模式时,它会在标题中感知以下内容: Mozilla/5.0+(iPad;+CPU+OS+6_0+like+Mac+OS+X)+AppleWebKit/534.46.0+(KHTML,+like+壁虎)+CriOS/21.0.1180.82+手机/10A403+Safari/7534.48.3

我试图在我的“app_browsers”目录中添加一个新浏览器,复制“chrome”并将其重新命名为“chromeios”,并将其中的“chrome”用户代理替换为 CriOS。这什么也没做,我什至不确定“app_Browsers”目录中的文件是否在做任何事情。

那是我遇到这个问题的时候。用户 vamshikJay Douglass提出的答案放在一起对我有用。

然而,Jay 的错误在于它有错误的用户代理(它应该是“crios”)。

然而,用户 geo1701 抱怨将此添加到每个页面。这可以通过创建一个继承 System.Web.UI.Page 的类轻松完成,然后使用“protected void Page_PreInit”事件添加上述代码,然后用新类替换每个网页上的继承。然后,如果您需要在每个页面中添加所需的内容,您也可以使用该类来添加它。

我还想知道是否有办法将它添加到 global.asax 类中?但我猜不是...

仍在寻找更好的解决方案。如果我找到一个,我会更新。

找到以下相关帖子:

iPad 上的 Chrome for iOS 用户代理

ASP.NET Webforms 不为 Chrome/iOS 呈现回发 JavaScript 函数

更新 我由 Scott Hanselman找到了这个。当他谈论 cookie 时,我认为他的建议可能会让我们朝着正确的方向前进。

好的!最后更新!!!

安装 .NET Framework 4.5 并从我的 app_browsers 目录中删除文件后,我 iPad 上的 Chrome 正在运行。我查看了 .net 4.5 提供的新.Browser文件中的条目,并没有什么特别之处,所以我猜测还有更多内容,然后是对.browser文件的一些更新。

.Net framework 4.5 可以在这里下载

于 2012-11-01T14:49:07.763 回答
1

ASP.NET 可能错误地将 iPad 上的 Chrome 检测为不支持 JavaScript 的“低级”浏览器。ASP.NET 使用用户代理字符串来检测下层浏览器。要强制将 Chrome 检测为“高级”浏览器,您可以执行以下操作:

protected void Page_PreInit(object sender, EventArgs e)
{
    if (Request.UserAgent != null && Request.UserAgent.IndexOf("chrome", StringComparison.OrdinalIgnoreCase) > -1)
    {
        this.ClientTarget = "uplevel";
    }
}
于 2012-08-04T08:21:40.087 回答
1

下面为我​​工作...

if (Request.UserAgent != null && Request.UserAgent.IndexOf("crios", StringComparison.OrdinalIgnoreCase) > -1)
{
    this.ClientTarget = "uplevel";
}
于 2012-10-01T18:57:12.810 回答
0

很可能 ASP.NET 生成无效页面。

我不了解 iPhone,但 Android 版本有Remote Debugging。您可以尝试在那里检查页面。

于 2012-09-12T03:07:46.420 回答