媆媆_ 2023-06-07 09:23 采纳率: 31.8%
浏览 41

h5监听视窗变化bug?

电脑端微信打开h5项目,快速拉大拉小视窗,当视窗快速拉小时获取的视窗宽度有问题(比实际的大)
正常情况下(拉大时左右都有空余的情况才654):

img


快速拉小时:

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-11 16:29
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt:

      回答:该问题可能属于电脑端微信处理视窗变化的问题,解决方案如下:

      1.尝试监听窗口resize事件,及时更新视窗宽度。

      代码如下:

      window.onresize = function(){
         let pageWidth = document.documentElement.clientWidth;
         //使用pageWidth做相关计算
      }
      

      2.尝试使用CSS媒体查询来控制视窗缩放,避免出现宽度计算错误的问题。

      例如:

      @media (max-width: 768px){
        //在此设定相关样式
      }
      

      3.如果以上方法无效,可以尝试使用JS debounce函数来控制resize事件的触发频率,降低计算错误的风险。

      代码如下:

      function debounce(func, wait, immediate) {
          let timeout;
          return function() {
              let context = this, args = arguments;
              let later = function() {
                  timeout = null;
                  if (!immediate) func.apply(context, args);
              };
              let callNow = immediate && !timeout;
              clearTimeout(timeout);
              timeout = setTimeout(later, wait);
              if (callNow) func.apply(context, args);
          };
      };
      
      window.onresize = debounce(function(){
        let pageWidth = document.documentElement.clientWidth;
        //使用pageWidth做相关计算
      }, 300);
      

      4.还可以检查页面中是否存在其他的元素或JS代码对视窗宽度做出了修改,例如设置了固定宽度或使用JS来改变了宽度值,要尽量保证这些改变不会影响到微信打开H5项目时的视窗宽度计算。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 6月7日

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配