chrome 设备模拟器不但模拟了设备的尺寸,同时也设置了对应的 userAgent。但是 navigator.platform 却没有修改。

在 PC Chrome 49 开发工具,打开 iPhone 6 模拟器,控制台打印:

navigator.platform
// Win32

navigator.userAgent
// Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1

可以看到 navigator.platform 返回的是 Win32。

关于 navigator.platform 的返回值,这里有回答:
What is the list of possible values for navigator.platform as of today?

解决办法

使用 es5 的 Object.defineProperty 方法

Object.defineProperty(navigator, "platform", {
    get: function () {
        return "iPhone";
    }
});

当然,其他属性(userAgent、language 等)也可以通过这种方式修改。

Object.defineProperty(navigator, "userAgent", {
    get: function () {
        return "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E234 Safari/601.1";
    }
});