对Windows Phone的每次更新都会为内部Internet Explorer带来新功能/错误。
我们想知道一种检测8.1 Update 2(GDR2)的方法。
据推测,有一个功能或错误可以被嗅探:
添加到GDR2中的功能,或
GDR1中的错误现已在GDR2中修复,或
检测添加到GDR2的错误(不稳定的嗅探,因为错误可能会被修补,所以不太理想)。
注意微软提供的changelist。另请注意,尽可能使用特征检测,但仍需要嗅探,因为:(1)您无法总是找到检测功能/错误的方法(一些CSS错误,一些需要用户交互的错误),以及(2)我们想要使用异常日志记录浏览器版本,以及其他记录的信息(以便我们可以找到问题的模式),以及(3)我们希望在一个地方显示任何设备的版本,以便我们的用户可以轻松地向我们报告(没有我们要求他们进入设备特定的设置等)。
答案 0 :(得分:2)
编辑:Here是检测不同Windows Phone更新的示例代码(对于更新1,2和10.您可以edit javascript。)
在Update 2中,看起来他们删除了对2011款flexbox(带有ms前缀)的支持,可以通过以下代码进行测试:
'msFlexAlign' in document.documentElement.style
对于Internet Explorer 11 Mobile Update 1,返回true,对IE11 Update 2返回false。Here是jsbin测试。
注意我通过使用Modernizr 3 cow tests找到了这一点,并比较了Results for update 1和Results for update 2。只有一个区别,flexboxtweener值从true变为false。
编辑:如果你需要检测更新1,那么检测WP8.1和WP8.1 Update 1上IE11之间差异的方法是8.1 Update 1(和Update 2)也支持document.ontouchstart你可以使用ontouchstart'进行测试在窗口中。但是要注意Windows Phone 10(10.0.10586)上的应用程序如果使用WebView(WebView使用IE11和' ontouchstart'在窗口中=== false !!! Arrrgggh),它将再次恢复。
编辑:如果在Windows Phone 10(Windows 10 Mobile 10.0.10586)上针对目标WP8.1编译的应用程序中使用WebView,则它使用IE11,而应用程序不使用Microsoft Edge! WTF:IE11的那个版本对'msFlexAlign' in document.documentElement.style
返回true,所以似乎更新1和更新2的更改在WP10中丢失或恢复 - 哎哟。您可以在WP10 / W10M(更新3; - |)上检测IE11,因为它有" Trident / 8.0"在用户代理中,而WP8.1上的IE11具有" Trident / 7.0"。如果用户代理包含" WebView / 2.0"那么您可能只会寻找差异。 (虽然https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx也提及了#34; MSAppHost")。如果使用设置|可能会发生其他事情桌面模式(除其他更改中删除" Windows Phone 8.1"并向用户代理添加" WPDesktop")或者如果使用X-UA-Compatible将文档模式更改为< IE11)。 Windows文档是"在为Windows 10编译的应用程序中,WebView使用Microsoft Edge呈现引擎来显示HTML内容。在为Windows 8或Windows 8.1编译的应用程序中,WebView在文档模式下使用Internet Explorer 11。" (CAVEAT:我们的经验是,针对目标Windows 8编译的应用程序在文档模式10中使用IE,并且必须创建目标8.1的新空项目,并且在文档模式11中使用IE11之前从旧项目复制所有内容)