window.screen.width在移动端上和PC上对应的像素是同一种么

泻药
Screen Interface 属于 CSSOM View Module
返回逻辑像素
但看起来有 quirk 情况会返回 物理像素,这跟实现是否调用了 SetReportScreenSizeInPhysicalPixelsQuirk有关,而与 PC、移动 大概念无关。
具体实现可能在某个系统判定相关的宏去设置 quirk,从而使某系统下的取值是物理像素。
而模拟情况是已经远在编译后运行的代码了,系统判定宏已经固定。这个系统被 setting 了非 quirk 的方式,就肯定不会管 devicePixelRatio。
可以看看具体实现,比如chrome 的 https://cs.chromium.org/chromium/src/third_party/WebKit/Source/core/frame/Screen.cpp?type=cs\u0026amp;amp;l=56
这时候才会与 devicePixelRatio 相关
int Screen::width() const {
if (!GetFrame())
return 0;
【window.screen.width在移动端上和PC上对应的像素是同一种么】 Page* page = GetFrame()-\u0026gt;GetPage();
if (!page)
return 0;
if (page-\u0026gt;GetSettings().GetReportScreenSizeInPhysicalPixelsQuirk()) {
WebScreenInfo screen_info = page-\u0026gt;GetChromeClient().GetScreenInfo();
return lroundf(screen_info.rect.width * screen_info.device_scale_factor);
}
return page-\u0026gt;GetChromeClient().GetScreenInfo().rect.width;
}

■网友
既然是模拟,就要模拟到位啊。手机上浏览器都是全屏的,自然window.innerWidth等于screen.width了。devicePixelRatio的值也是按照手机上来的,比如iPhone 6 Plus就是3。你也可以在devtools里自己添加新的模拟设备,指定这些值。


    推荐阅读