【发布时间】:2017-12-08 22:37:28
【问题描述】:
1。总结
我在我的网站上对 PC 和移动设备的 CSS 和 JavaScript 代码使用媒体查询。如果 PC 用户调整我网站的页面大小,则活动窗口的宽度将
2。设置
-
我网站页面的 CSS:
@media screen and (min-width: 60rem) { /* My CSS for PC */ } } @media screen and (max-width: 60rem) { /* My CSS for mobile devices */ } -
我网站页面的 JavaScript:
window.onload = function() { if (window.matchMedia("(min-width: 60rem)").matches) { // My JavaScript for PC } else { // My JavaScript for mobile devices } };
如果用户在 PC 或移动设备上使用我的 CSS 和 JavaScript 打开页面而不调整活动窗口的大小,则页面可以正常工作。
3。重现步骤
PC 用户在现代浏览器中打开我网站的任何页面 (example) → 用户调整页面大小(例如,使用 Super+Left_Arrow 或 Super+Right_Arrow 热键对于Windows Aero Snap)。现在窗口宽度
4。预期行为
更新页面的 CSS 和 JavaScript。
5。实际行为
CSS 更新,JavaScript 不更新。如果窗口宽度
如果窗口宽度
6。没有帮助
- 我尝试使用MatchMedia.js,
-
我为媒体查询添加event listener:
// media query event handler if (matchMedia) { var mq = window.matchMedia("(min-width: 500px)"); mq.addListener(WidthChange); WidthChange(mq); } // media query change function WidthChange(mq) { if (mq.matches) { // window width is at least 500px } else { // window width is less than 500px } }完整代码 - https://www.pastery.net/uxkvma/。
-
我无法为任务编写代码:如果用户按下 Super+Left_Arrow 或 Super+Right_Arrow,页面会重新加载。如果用户按 Ctrl+Left_Arrow 或 Ctrl+Right_Arrow,我可以编写重新加载页面的代码:
$(document).keydown(function(e) { if (e.keyCode == 37 && e.ctrlKey || e.keyCode == 39 && e.ctrlKey){ window.location.reload(); } });但如果我将
ctrlKey替换为metaKey,代码将不起作用。 -
现在I use
window.location.reload(),如果通过任何方法调整页面大小:window.addEventListener('resize', function(event) { clearTimeout(resizeTimeout); var resizeTimeout = setTimeout(function(){ window.location.reload(); }, 1500); });但这不是最好的主意,因为例如,如果用户按 Ctrl+F 在页面中查找文本或打开浏览器控制台,页面将重新加载。
7。不提供
- 如果用户必须安装插件、更改设置或对浏览器执行其他操作,请不要提供解决方案。解决方案必须适用于任何现代浏览器的默认设置。
【问题讨论】:
-
在服务器端获取分辨率,并为分辨率维护不同的视图。这意味着,如果它是全分辨率,则返回“FullView”html 视图,如果调整大小则发送“ResizedView”视图。
-
这里有点困惑。您是说服务器应该根据浏览器的屏幕分辨率加载脚本?或者您是说脚本应该在客户端根据屏幕大小进行更改?
-
@Sagar:用户有任何现代浏览器(例如,Firefox 或 Chrome)+ 使用默认浏览器设置 + 用户调整我网站的页面大小。用户不需要为浏览器安装插件或更改浏览器设置,但 JavaScript 代码会为他正确更改。谢谢。
-
也许这会有所帮助? stackoverflow.com/questions/1818474/…
-
@BibyAugustine:对不起,我可以在哪里阅读更多详细信息,如何实现您的算法?谢谢。
标签: javascript jquery media-queries