问题 iPad上的Chrome无法使用ASP.NET 4


我刚刚下载了 谷歌Chrome for iPad 我注意到它不适用于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的更新浏览器定义文件?


8879
2017-07-21 11:30


起源

asp.net与客户端浏览器无关 - 浏览器不知道他们刚刚阅读html的服务器背后是什么。 - Aristos
它是为引发问题的回发事件自动生成的代码。这可能是googles的错 - 可能是他们的ipad浏览器出现错误,而不是'桌面站点模式'(无论是什么)。 - George Filippakos
我只使用谷歌浏览器,并没有任何问题与非常困难的程序。 - Aristos
这个问题特定于iOS上的iPad的谷歌浏览器浏览器。 - George Filippakos
您是否尝试在此浏览器中使用其他类型的Web框架开发网站?我很确定你会收到相同的结果。看起来它是特定于浏览器的。 - RredCat


答案:


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

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

当它处于标准模式时,它会感知标题中的以下内容: 的Mozilla / 5.0 +(ipad公司; + CPU + OS + 6_0 +等+ MAC + OS + X)+为AppleWebKit / 534.46.0 +(KHTML,+等+壁虎)+ CriOS / 21.0.1180.82 +移动/ 10A403 + Safari浏览器/ 7534.48.3

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

那是我遇到这个问题的时候。用户建议的答案 vamshik 和 杰伊道格拉斯,当放在一起为我工作。

然而杰伊的错误是因为它有错误的用户代理(它应该是“crios”)。

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

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

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

找到以下相关帖子:

适用于iPad的Chrome for iOS用户代理

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

UPDATE 我发现 这个 作者:Scott Hanselman。当他谈论饼干时,我认为他的建议可能会让我们朝着正确的方向前进。

好!最终更新!!!

安装.NET Framework 4.5并从我的app_browsers目录中删除文件后,我的iPad上的Chrome工作正常。我看了新的条目 .Browser .net 4.5提供的文件,并没有什么值得注意的,所以我猜它还有更多,然后一些更新到 .browser 文件。

可以下载.Net framework 4.5 这里


8
2017-11-01 14:49



升级到4.5就像一个魅力!谢谢! - George Filippakos


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";
    }
}

1
2017-08-04 08:21



应该有一种方法来覆盖machine.config中的检测,而不是将这种类型的代码添加到每个页面。 - George Filippakos


以下为我工作......

if (Request.UserAgent != null && Request.UserAgent.IndexOf("crios", StringComparison.OrdinalIgnoreCase) > -1)
{
    this.ClientTarget = "uplevel";
}

1
2017-10-01 18:57





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

我不知道iPhone,但Android版本 远程调试。您可以尝试在那里检查页面。


0
2017-09-12 03:07



是什么让你说它可能是ASP.NET生成无效页面?请记住,我们在这里谈论ASP.NET 4.0。 - Andrew Barber
asp.net不会渲染javascripts,因为它认为浏览器是低级的。 - Ashish