我刚刚下载了适用于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的更新浏览器定义文件?
答案 0 :(得分:8)
我遇到了同样的问题。大多数一切都在我的页面上正常工作,只有少数在客户端修改的项目显示不正确。
我检查了从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 和 Jay Douglass 建议的答案,当我放在一起工作时。
然而,Jay的错误是因为它有错误的用户代理(它应该是“crios”)。用户geo1701然而抱怨将此添加到每个页面。这可以通过创建一个继承System.Web.UI.Page的类,然后使用“protected void Page_PreInit”事件添加上面的代码,然后用新类替换每个网页上的继承来轻松完成。然后,如果您需要在每个页面中添加所需的内容,那么您也可以添加该类。
我也想知道是否有办法将它添加到global.asax类?但我猜不是......
仍在寻找更好的解决方案。如果我找到一个,我会更新。
找到以下相关帖子:
Chrome for iOS user agent on iPad
ASP.NET Webforms Doesn't Render Postback JavaScript Function for Chrome/iOS
<强>更新强> 我找到了Scott Hanselman的this。当他谈论饼干时,我认为他的建议可能会让我们朝着正确的方向前进。
确定!最终更新!!!
安装.NET Framework 4.5并从app_browsers目录中删除文件后,我的iPad上的Chrome工作正常。我查看了.net 4.5提供的新 .Browser 文件中的条目,并没有什么值得注意的,所以我猜它还有更多,然后更新到。浏览器文件。
.Net framework 4.5可以下载here
答案 1 :(得分: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";
}
}
答案 2 :(得分:1)
以下为我工作......
if (Request.UserAgent != null && Request.UserAgent.IndexOf("crios", StringComparison.OrdinalIgnoreCase) > -1)
{
this.ClientTarget = "uplevel";
}
答案 3 :(得分:0)
ASP.NET可能会生成无效页面。
我不了解iPhone,但Android版本有Remote Debugging。您可以尝试在那里检查页面。