Windows Phone的每次更新都会为内部Internet Explorer带来新功能/错误。

我们希望知道一种检测8.1 Update 2(GDR2)的方法。

大概其中一项功能或错误可能会被嗅到:


GDR2中添加的功能,或
现在已在GDR2中修复了GDR1中的错误,或者
检测添加到GDR2的错误(不稳定的嗅探,由于漏洞可能已被修补,因此不太理想)。


注意changelist由Microsoft给出。还要注意,在可能的情况下会使用功能检测,但仍需要进行嗅探,因为:(1)您不能总是找到一种检测功能/错误的方法(某些CSS错误,某些需要用户交互的错误),以及(2)我们想要记录带有异常日志和其他已记录信息的浏览器版本(以便我们可以找到问题的模式),以及(3)我们希望在单个位置显示任何设备的版本,以便我们的用户可以轻松地将其报告给我们(无需我们要求他们进入设备特定的设置等)。

最佳答案

编辑:Here是检测不同Windows Phone更新的示例代码(对于更新1、2和10。您可以edit JavaScript。)

在Update 2中,似乎他们删除了对2011样式flexbox(带有ms前缀)的支持,可以通过以下代码对其进行测试:

'msFlexAlign' in document.documentElement.style


对于Internet Explorer 11移动更新1,返回true;对于IE11更新2,返回false。Here是jsbin测试。

请注意,我是通过使用Modernizr 3 cow tests并比较Results for update 1Results for update 2来发现的。只有一个区别,flexboxtweener值从true更改为false。

编辑:如果需要检测更新1,那么一种检测WP8.1上的IE11和WP8.1更新1之间的差异的方法是8.1更新1(以及更新2)也支持document.ontouchstart,您可以使用进行测试窗口中的“ ontouchstart”。但是请注意,如果使用WebView,则Windows Phone 10(10.0.10586)上的某个应用会再次还原(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,因此看来WP10中的更新1和更新2的更改已丢失或还原-哎呀。您可以在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也提到“ MSAppHost”),则可能只寻找差异。如果使用“设置” |“其他”,可能会发生其他事情。桌面模式(除其他更改外,还将删除“ Windows Phone 8.1”并向用户代理添加“ WPDesktop”),或者使用X-UA-Compatible将文档模式更改为

关于javascript - 有没有办法在Windows Phone 8.1 Update 2上检测到新的IE版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32373771/

10-16 14:39