如果网站在ipad safari中运行或在应用程序WebView中运行,是否有办法通过javascript进行区分?
如何在Asp.Net 5 MVC 6中检测用户是否在移动设备上?
在以前的版本中 Asp MVC可以这样做:
Request.Browser.IsMobileDevice
Run Code Online (Sandbox Code Playgroud)
问题是名称空间System.Web不被使用Asp.Net 5.
Request控制器操作中的变量现在是类型Microsoft.AspNet.Http.HttpRequest,旧版本是类型System.Web.HttpRequestBase.
Microsoft.AspNet.Http.HttpRequest不包含该Browser属性.我试着浏览其他属性,但没有找到任何东西.
编辑:根据要求,一些资源证明Asp.Net 5不再使用System.Web.来自Asp.Net文档
ASP.NET 5不再基于System.Web.dll,而是基于一组精心设计且考虑周全的NuGet包,允许您优化您的应用程序以满足您的需求.
在实现Apple iOS 13之后,我意识到iPad iOS 13的Safari中的window.navigator.userAgent与MacOS相同。像这样:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15
如您所见,这是iPad的错误用户代理,甚至无法检测当前设备是否为iDevice。
经过初步研究,我找到了解决方法:
转到设置-> Safari->请求桌面网站->所有网站。您会注意到默认情况下启用了 “所有网站” 。如果禁用它并获取window.navigator.userAgent,则现在将显示正确的用户代理。
但我不能要求每个用户对每个设备进行此设置更改。因此,我试图找到另一种方法,最后编写了以下代码,检查它是否是Safari,macOS和触摸屏,然后该设备应该是苹果移动设备,但是我想知道是否有更好的建议/方法在Safari iOS 13中检测到正确的设备名称?
detectOs = function(){
//returns OS name, like "mac"
};
//is Safari on an apple touch-screen device
isSafariInIdevice = function(){
if (/Safari[\/\s](\d+\.\d+)/.test(windows.navigator.userAgent)) {
return 'ontouchstart' in window && detectOs() === "mac";
}
return false;
};
Run Code Online (Sandbox Code Playgroud) ios ×2
javascript ×2
asp.net-core ×1
c# ×1
ios13 ×1
ipad ×1
safari ×1
user-agent ×1
webview ×1