我刚刚下载了 谷歌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的更新浏览器定义文件?
我遇到了同样的问题。大多数一切都在我的页面上正常工作,只是在客户端显示的一些项目显示不正确。
我检查了从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 这里
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";
}
}
以下为我工作......
if (Request.UserAgent != null && Request.UserAgent.IndexOf("crios", StringComparison.OrdinalIgnoreCase) > -1)
{
this.ClientTarget = "uplevel";
}
ASP.NET可能会生成无效页面。
我不知道iPhone,但Android版本 远程调试。您可以尝试在那里检查页面。