Javascript 在Chrome中检测设备仿真模式何时打开或关闭
Chrome DevTools可以选择使用设备仿真模式 我知道有一个测试模式是否开启的方法。但我想知道它什么时候被激活或停用,点击 是否有任何由浏览器触发的事件表明模式已打开或关闭?我最终执行了以下操作:Javascript 在Chrome中检测设备仿真模式何时打开或关闭,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,Chrome DevTools可以选择使用设备仿真模式 我知道有一个测试模式是否开启的方法。但我想知道它什么时候被激活或停用,点击 是否有任何由浏览器触发的事件表明模式已打开或关闭?我最终执行了以下操作: $(window).on('orientationchange', function(e) { if (e.tagret && e.target.devicePixelRatio > 1) { // Emulation mode activate
$(window).on('orientationchange', function(e) {
if (e.tagret && e.target.devicePixelRatio > 1) {
// Emulation mode activated
} else {
// Emulation mode deactivated
}
});
适用于谷歌浏览器(我的版本:58.0)。这是防弹的方式吗?不确定。不过,这足够满足我的需要了
方向更改
文档。我的解决方案:
$(window).on('orientationchange', function(e) {
setTimeout(function() {
var emulationModeActivated = window.navigator.userAgent.indexOf('Mobile') !== -1;
}, 0);
});
Chrome在设备模拟模式下向userAgent添加了Mobile
,例如“Mozilla/5.0(iPhone;CPU iPhone OS 103,如Mac OS X)AppleWebKit/602.1.50(KHTML,如Gecko)CriOS/56.0.2924.75Mobile/14E5239e Safari/602.1”
e.target.devicePixelRatio
在带有Retina显示屏的Mac上不可用,因为值始终大于1一个可靠的解决方案可能需要监控调整大小事件、不断变化的devicePixelRatio、不断变化的userAgent、触摸模式检测的可用性和方向变化,并根据所有这些情况做出决策。这些信号可能意味着其他事情。