Windows Phone的每次更新都会为内部Internet Explorer带来新功能/错误。
我们希望知道一种检测8.1 Update 2(GDR2)的方法。
大概其中一项功能或错误可能会被嗅到:
GDR2中添加的功能,或
现在已在GDR2中修复了GDR1中的错误,或者
检测添加到GDR2的错误(不稳定的嗅探,由于漏洞可能已被修补,因此不太理想)。
注意Microsoft提供的更改列表。另请注意,在可能的情况下会使用功能检测,但仍需要进行嗅探,因为:(1)您不能总是找到一种检测功能/错误的方法(某些CSS错误,某些需要用户交互的错误),以及(2)我们想要记录带有异常日志和其他已记录信息的浏览器版本(这样我们就可以找到问题的模式),并且(3)我们希望在单个位置显示任何设备的版本,以便我们的用户可以轻松地向我们报告(无需我们要求他们进入设备特定的设置等)。
编辑:这是检测不同Windows Phone更新的示例代码(对于更新1、2和10。您可以编辑javascript。)
在Update 2中,似乎他们删除了对2011样式flexbox(带有ms前缀)的支持,可以通过以下代码对其进行测试:
'msFlexAlign' in document.documentElement.style
对于Internet Explorer 11移动更新1,它返回true;对于IE11更新2,它返回false。这是一个jsbin测试。
请注意,我是通过使用Modernizr 3母牛测试并将更新1的结果与更新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返回true,'msFlexAlign' in document.documentElement.style
因此看来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将文档模式更改为<IE11)。Windows文档是“在为Windows 10编译的应用程序中,WebView使用Microsoft Edge呈现引擎显示HTML内容。在为Windows 8或Windows 8.1编译的应用程序中,WebView在文档模式下使用Internet Explorer11。” (注意:我们的经验是,为目标Windows 8编译的应用程序在文档模式10下使用IE,并且必须创建用于目标8.1的新的空项目,并且所有内容都必须从旧项目中复制过来,然后才能在文档模式11下使用IE11。) 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句